[Python-modules-commits] [python-odf] 30/118: Updated the manpages with author info

Wolfgang Borgert debacle at moszumanska.debian.org
Fri Oct 3 21:27:19 UTC 2014


This is an automated email from the git hooks/post-receive script.

debacle pushed a commit to reference refs/remotes/upstream/master
in repository python-odf.

commit b83dc142e39ec147ccf315917c26c225e4532e4f
Author: Søren Roug <soren.roug at eea.europa.eu>
Date:   Sun Jan 4 11:29:10 2009 +0000

    Updated the manpages with author info
---
 csv2ods/Makefile              |  14 ++
 csv2ods/csv2ods               | 151 +++++++++++++++++++++
 csv2ods/csv2ods.1             | 270 +++++++++++++++++++++++++++++++++++++
 csv2ods/csv2ods.xml           | 162 ++++++++++++++++++++++
 mailodf/mailodf.1             | 241 +++++++++++++++++++++++++++++----
 mailodf/mailodf.xml           |  11 ++
 odf2mht/odf2mht.1             | 257 +++++++++++++++++++++++++++++------
 odf2mht/odf2mht.xml           |  11 ++
 odf2war/odf2war.1             | 238 ++++++++++++++++++++++++++++-----
 odf2war/odf2war.xml           |  11 ++
 odf2xhtml/odf2xhtml.1         | 214 ++++++++++++++++++++++++++---
 odf2xhtml/odf2xhtml.xml       |   4 +
 odf2xml/odf2xml.1             | 224 ++++++++++++++++++++++++++++---
 odf2xml/odf2xml.xml           |   4 +
 odfimgimport/odfimgimport.1   | 220 +++++++++++++++++++++++++++---
 odfimgimport/odfimgimport.xml |   8 +-
 odflint/odflint.1             | 214 +++++++++++++++++++++++++++--
 odflint/odflint.xml           |  12 ++
 odfmeta/odfmeta.1             | 303 +++++++++++++++++++++++++++++++++---------
 odfmeta/odfmeta.xml           |  12 ++
 odfoutline/odfoutline.1       | 211 +++++++++++++++++++++++++++--
 odfoutline/odfoutline.xml     |  12 ++
 odfuserfield/odfuserfield.1   | 268 ++++++++++++++++++++++++++++++++-----
 odfuserfield/odfuserfield.xml |  20 +++
 setup.py                      |   2 +
 xml2odf/xml2odf.1             | 257 ++++++++++++++++++++++++++++-------
 xml2odf/xml2odf.xml           |  14 +-
 27 files changed, 3044 insertions(+), 321 deletions(-)

diff --git a/csv2ods/Makefile b/csv2ods/Makefile
new file mode 100644
index 0000000..22935b1
--- /dev/null
+++ b/csv2ods/Makefile
@@ -0,0 +1,14 @@
+all: odf csv2ods.1 
+
+txt: csv2ods.txt
+
+%.1: %.xml 
+	xmlto man $<
+
+%.txt: %.xml 
+	xmlto txt $<
+
+clean:
+	rm -f *.txt odf
+odf:
+	ln -s ../odf
diff --git a/csv2ods/csv2ods b/csv2ods/csv2ods
new file mode 100755
index 0000000..c4d7c6f
--- /dev/null
+++ b/csv2ods/csv2ods
@@ -0,0 +1,151 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (C) 2008 Agustin Henze -> agustinhenze at gmail.com
+#
+# This is free software.  You may redistribute it under the terms
+# of the Apache license and the GNU General Public License Version
+# 2 or at your option any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+#
+# Contributor(s):
+# Søren Roug
+
+from odf.opendocument import OpenDocumentSpreadsheet
+from odf.style import Style, TextProperties, ParagraphProperties, TableColumnProperties
+from odf.text import P
+from odf.table import Table, TableColumn, TableRow, TableCell
+from optparse import OptionParser
+import sys,csv,re
+
+PWENC = "utf-8"
+
+def csvToOds( pathFileCSV, pathFileODS, tableName='table', delimiter=',', quoting=csv.QUOTE_MINIMAL, quotechar = '"',
+							escapechar = None, skipinitialspace = False, lineterminator = '\r\n'):
+	textdoc = OpenDocumentSpreadsheet()
+	# Create a style for the table content. One we can modify
+	# later in the word processor.
+	tablecontents = Style(name="Table Contents", family="paragraph")
+	tablecontents.addElement(ParagraphProperties(numberlines="false", linenumber="0"))
+	tablecontents.addElement(TextProperties(fontweight="bold"))
+	textdoc.styles.addElement(tablecontents)
+	
+	# Start the table
+	table = Table( name=tableName )
+	
+	reader = csv.reader(open(pathFileCSV), delimiter=delimiter,
+						quoting=quoting, quotechar=quotechar, escapechar=escapechar,
+						skipinitialspace=skipinitialspace, lineterminator=lineterminator)
+	fltExp = re.compile('^\s*[-+]?\d+(\.\d+)?\s*$')
+	
+	for row in reader:
+		tr = TableRow()
+		table.addElement(tr)
+		for val in row:
+			if fltExp.match(val):
+				tc = TableCell(valuetype="float", value=val.strip())
+			else:
+				tc = TableCell(valuetype="string")
+			tr.addElement(tc)
+			p = P(stylename=tablecontents,text=unicode(val,PWENC))
+			tc.addElement(p)
+
+	textdoc.spreadsheet.addElement(table)
+	textdoc.save( pathFileODS )
+	
+if __name__ == "__main__":
+	usage = "%prog -i file.csv -o file.ods -d"
+	parser = OptionParser(usage=usage, version="%prog 0.1")
+	parser.add_option('-i','--input', action='store',
+			dest='input', help='File input in csv')
+	parser.add_option('-o','--output', action='store',
+			dest='output', help='File output in ods')
+	parser.add_option('-d','--delimiter', action='store',
+			dest='delimiter', help='specifies a one-character string to use as the field separator.  It defaults to ",".')
+			
+	parser.add_option('-c','--encoding', action='store',
+			dest='encoding', help='specifies the encoding the file csv. It defaults to utf-8')
+			
+	parser.add_option('-t','--table', action='store',
+			dest='tableName', help='The table name in the output file')
+			
+	parser.add_option('-s','--skipinitialspace',
+			dest='skipinitialspace', help='''specifies how to interpret whitespace which
+						immediately follows a delimiter.  It defaults to False, which 
+						means that whitespace immediately following a delimiter is part
+						of the following field.''')
+						
+	parser.add_option('-l','--lineterminator', action='store',
+			dest='lineterminator', help='''specifies the character sequence which should
+						terminate rows.''')
+						
+	parser.add_option('-q','--quoting', action='store',
+			dest='quoting', help='''It can take on any of the following module constants:
+						0 = QUOTE_MINIMAL means only when required, for example, when a field contains either the quotechar or the delimiter
+						1 = QUOTE_ALL means that quotes are always placed around fields.
+						2 = QUOTE_NONNUMERIC means that quotes are always placed around fields which do not parse as integers or floating point numbers.
+						3 = QUOTE_NONE means that quotes are never placed around fields.
+						It defaults is QUOTE_MINIMAL''')
+						
+	parser.add_option('-e','--escapechar', action='store',
+			dest='escapechar', help='''specifies a one-character string used to escape the delimiter when quoting is set to QUOTE_NONE.''')
+			
+	parser.add_option('-r','--quotechar', action='store',
+			dest='quotechar', help='''specifies a one-character string to use as the quoting character.  It defaults to ".''')
+						
+	(options, args) = parser.parse_args()
+	
+	if options.input:
+		pathFileCSV = options.input
+	else:
+		parser.print_help()
+		exit( 0 )
+		
+	if options.output:
+		pathFileODS = options.output
+	else:
+		parser.print_help()
+		exit( 0 )
+		
+	if options.delimiter:
+		delimiter = options.delimiter
+	else:
+		delimiter = ","
+		
+	if options.skipinitialspace:
+		skipinitialspace = True
+	else:
+		skipinitialspace=False
+	
+	if options.lineterminator:
+		lineterminator = options.lineterminator
+	else:
+		lineterminator ="\r\n"
+	
+	if options.escapechar:
+		escapechar = options.escapechar
+	else:
+		escapechar=None
+		
+	if options.encoding:
+		PWENC = options.encoding
+		
+	if options.tableName:
+		tableName = options.tableName
+	else:
+		tableName = "table"
+		
+	if options.quotechar:
+		quotechar = options.quotechar
+	else:
+		quotechar = "\""
+		
+	csvToOds( pathFileCSV=pathFileCSV, pathFileODS=pathFileODS, delimiter=delimiter, skipinitialspace=skipinitialspace,
+						escapechar=escapechar, lineterminator=lineterminator, tableName=tableName, quotechar=quotechar)
diff --git a/csv2ods/csv2ods.1 b/csv2ods/csv2ods.1
new file mode 100644
index 0000000..e73e9b0
--- /dev/null
+++ b/csv2ods/csv2ods.1
@@ -0,0 +1,270 @@
+.\"     Title: csv2ods
+.\"    Author: Agustin Henze <agustinhenze at gmail.com>
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "CSV2ODS" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+csv2ods \- Create OpenDocument spreadsheet from comma separated values
+.SH "Synopsis"
+.fam C
+.HP \w'\fBcsv2ods\fR\ 'u
+\fBcsv2ods\fR \-i\ \fIfile\&.csv\fR \-o\ \fIfile\&.ods\fR
+.fam
+.SH "Description"
+.PP
+This program reads a file in CSV format \- table of columns delimited by commas, tabs or any other character\&. It then creates a spreadsheet\&. If a value looks like a number the cell is formatted as a number as well\&.
+.SH "Options"
+.PP
+\-\-version
+.RS 4
+Show program\'s version number and exit
+.RE
+.PP
+\-h, \-\-help
+.RS 4
+Show help message and exit
+.RE
+.PP
+\-i \fIINPUT\fR, \-\-input=\fIINPUT\fR
+.RS 4
+File input in csv\&.
+.RE
+.PP
+\-o \fIOUTPUT\fR, \-\-output=\fIOUTPUT\fR
+.RS 4
+File output in ods\&.
+.RE
+.PP
+\-d \fIDELIMITER\fR, \-\-delimiter=\fIDELIMITER\fR
+.RS 4
+Specifies a one\-character string to use as the field separator\&. It defaults to ","\&.
+.RE
+.PP
+\-c \fIENCODING\fR, \-\-encoding=\fIENCODING\fR
+.RS 4
+Specifies the encoding the file csv\&. It defaults to utf\-8\&.
+.RE
+.PP
+\-t \fITABLENAME\fR, \-\-table=\fITABLENAME\fR
+.RS 4
+The table name in the output file\&.
+.RE
+.PP
+\-s \fISKIPINITIALSPACE\fR, \-\-skipinitialspace=\fISKIPINITIALSPACE\fR
+.RS 4
+Specifies how to interpret whitespace which immediately follows a delimiter\&. It defaults to False, which means that whitespace immediately following a delimiter is part of the following field\&.
+.RE
+.PP
+\-l \fILINETERMINATOR\fR, \-\-lineterminator=\fILINETERMINATOR\fR
+.RS 4
+Specifies the character sequence which should terminate rows\&.
+.RE
+.PP
+\-q \fIQUOTING\fR, \-\-quoting=\fIQUOTING\fR
+.RS 4
+It can take on any of the following module constants: 0 = QUOTE_MINIMAL means only when required, for example, when a field contains either the quotechar or the delimiter\&. 1 = QUOTE_ALL means that quotes are always placed around fields\&. 2 = QUOTE_NONNUMERIC means that quotes are always placed around fields which do not parse as integers or floating point numbers\&. 3 = QUOTE_NONE means that quotes are never placed around fields\&. It defaults is QUOTE_MINIMAL\&.
+.RE
+.PP
+\-e \fIESCAPECHAR\fR, \-\-escapechar=\fIESCAPECHAR\fR
+.RS 4
+Specifies a one\-character string used to escape the delimiter when quoting is set to QUOTE_NONE\&.
+.RE
+.PP
+\-r \fIQUOTECHAR\fR, \-\-quotechar=\fIQUOTECHAR\fR
+.RS 4
+Specifies a one\-character string to use as the quoting character\&. It defaults to "\&.
+.RE
+.SH "Example"
+.sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
+.nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
+csv2ods \-i /etc/passwd \-o accounts\&.odt \-d:
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
+.fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "Author"
+.PP
+\fBAgustin Henze\fR <\&agustinhenze at gmail\&.com\&>
+.RS 4
+Original author of csv\-ods\&.py
+.RE
diff --git a/csv2ods/csv2ods.xml b/csv2ods/csv2ods.xml
new file mode 100644
index 0000000..3109989
--- /dev/null
+++ b/csv2ods/csv2ods.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+<refentry id="csv2ods">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Agustin</firstname><surname>Henze</surname>
+    <contrib>Original author of csv-ods.py</contrib>
+    <email>agustinhenze at gmail.com</email></author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>csv2ods</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
+  <refnamediv>
+    <refname>csv2ods</refname>
+    <refpurpose>Create OpenDocument spreadsheet from comma separated values</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>csv2ods</command>
+      <arg choice="plain">-i <replaceable>file.csv</replaceable></arg>
+      <arg choice="plain">-o <replaceable>file.ods</replaceable></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>Description</title>
+    <para>
+This program reads a file in CSV format - table of columns delimited by commas,
+tabs or any other character. It then creates a spreadsheet. If a value looks like a number
+the cell is formatted as a number as well.
+</para>
+  </refsect1>
+  <refsect1>
+    <title>Options</title>
+    <variablelist>
+      <varlistentry>
+        <term>--version</term>
+        <listitem>
+          <para>
+Show program's version number and exit
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-h, --help</term>
+        <listitem>
+          <para>
+Show help message and exit
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-i <replaceable>INPUT</replaceable>, --input=<replaceable>INPUT</replaceable></term>
+        <listitem>
+          <para>
+                        File input in csv.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-o <replaceable>OUTPUT</replaceable>, --output=<replaceable>OUTPUT</replaceable></term>
+        <listitem>
+          <para>
+                        File output in ods.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-d <replaceable>DELIMITER</replaceable>, --delimiter=<replaceable>DELIMITER</replaceable></term>
+
+        <listitem>
+          <para>
+                        Specifies a one-character string to use as the field
+                        separator.  It defaults to ",".
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-c <replaceable>ENCODING</replaceable>, --encoding=<replaceable>ENCODING</replaceable></term>
+        <listitem>
+          <para>
+                        Specifies the encoding the file csv. It defaults to utf-8.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-t <replaceable>TABLENAME</replaceable>, --table=<replaceable>TABLENAME</replaceable></term>
+        <listitem>
+          <para>
+                        The table name in the output file.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-s <replaceable>SKIPINITIALSPACE</replaceable>, --skipinitialspace=<replaceable>SKIPINITIALSPACE</replaceable></term>
+        <listitem>
+          <para>
+                        Specifies how to interpret whitespace which
+                        immediately follows a delimiter.  It defaults to
+                        False, which
+                        means that whitespace immediately following a
+                        delimiter is part
+                        of the following field.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-l <replaceable>LINETERMINATOR</replaceable>, --lineterminator=<replaceable>LINETERMINATOR</replaceable></term>
+        <listitem>
+          <para>
+                        Specifies the character sequence which should
+                        terminate rows.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-q <replaceable>QUOTING</replaceable>, --quoting=<replaceable>QUOTING</replaceable></term>
+        <listitem>
+          <para>
+                        It can take on any of the following module constants:
+                        0 = QUOTE_MINIMAL means only when required, for
+                        example, when a field contains either the quotechar or
+                        the delimiter.
+                        1 = QUOTE_ALL means that quotes are always placed
+                        around fields.
+                        2 = QUOTE_NONNUMERIC means that quotes are always
+                        placed around fields which do not parse as integers or
+                        floating point numbers.
+                        3 = QUOTE_NONE means that quotes are never placed
+                        around fields.
+                        It defaults is QUOTE_MINIMAL.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-e <replaceable>ESCAPECHAR</replaceable>, --escapechar=<replaceable>ESCAPECHAR</replaceable></term>
+        <listitem>
+          <para>
+                        Specifies a one-character string used to escape the
+                        delimiter when quoting is set to QUOTE_NONE.
+</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>-r <replaceable>QUOTECHAR</replaceable>, --quotechar=<replaceable>QUOTECHAR</replaceable></term>
+        <listitem>
+          <para>
+                        Specifies a one-character string to use as the quoting
+                        character.  It defaults to ".
+</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1>
+    <title>Example</title>
+    <screen>
+csv2ods -i /etc/passwd -o accounts.odt -d:
+</screen>
+  </refsect1>
+</refentry>
diff --git a/mailodf/mailodf.1 b/mailodf/mailodf.1
index d6eb635..f8361db 100644
--- a/mailodf/mailodf.1
+++ b/mailodf/mailodf.1
@@ -1,43 +1,230 @@
 .\"     Title: mailodf
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/>
-.\"      Date: 07/27/2008
-.\"    Manual: 
-.\"    Source: 
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
 .\"
-.TH "MAILODF" "1" "07/27/2008" "" ""
+.TH "MAILODF" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
-mailodf - Email ODF file as HTML archive
-.SH "SYNOPSIS"
-.HP 8
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+mailodf \- Email ODF file as HTML archive
+.SH "Synopsis"
+.fam C
+.HP \w'\fBmailodf\fR\ 'u
 \fBmailodf\fR [\-f\ \fIfrom\fR] [\-s\ \fIsubject\fR] \fIinputfile\fR \fIrecipients\fR...
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
-mailodf is a program that will create a MIME\-encapsulated web archive and then sends it as an email\. Most email programs that understand HTML understands this format\.
+mailodf is a program that will create a MIME\-encapsulated web archive and then sends it as an email\&. Most email programs that understand HTML understands this format\&.
 .PP
-"Inputfile" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\.
-.SH "REFERENCES"
-.IP "" 4
-HTTRACK (http://www\.httrack\.com/) can create such archives with the \-%M option\.
-.IP "" 4
-http://en\.wikipedia\.org/wiki/MHTML
-.IP "" 4
-http://www\.dsv\.su\.se/~jpalme/ietf/mhtml\.html
-.IP "" 4
-http://users\.otenet\.gr/~geosp/kmhtconvert/
-.IP "" 4
-http://www\.faqs\.org/rfcs/rfc2557\.html
-.SH "EXAMPLE"
+"Inputfile" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
+.SH "References"
+.RS 4
+HTTRACK (http://www\&.httrack\&.com/) can create such archives with the \-%M option\&.
+.RE
+.RS 4
+http://en\&.wikipedia\&.org/wiki/MHTML
+.RE
+.RS 4
+http://www\&.dsv\&.su\&.se/~jpalme/ietf/mhtml\&.html
+.RE
+.RS 4
+http://users\&.otenet\&.gr/~geosp/kmhtconvert/
+.RE
+.RS 4
+http://www\&.faqs\&.org/rfcs/rfc2557\&.html
+.RE
+.SH "Example"
 .sp
+.if n \{\
 .RS 4
+.\}
+.fam C
+.ps -1
 .nf
-mailodf \-f lars\.oppermann at sun\.com \-s "F\.Y\.I" odf\-file
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
+mailodf \-f lars\&.oppermann at sun\&.com \-s "F\&.Y\&.I" odf\-file
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
+.fam
+.ps +1
+.if n \{\
 .RE
-.SH "SEE ALSO"
+.\}
+.SH "See Also"
 .PP
 odf2mht
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/mailodf/mailodf.xml b/mailodf/mailodf.xml
index a5c1ebb..665690c 100644
--- a/mailodf/mailodf.xml
+++ b/mailodf/mailodf.xml
@@ -2,6 +2,17 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="mailodf">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>mailodf</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
 <refnamediv>
 <refname>mailodf</refname>
 <refpurpose>Email ODF file as HTML archive</refpurpose>
diff --git a/odf2mht/odf2mht.1 b/odf2mht/odf2mht.1
index d7c9c55..50feace 100644
--- a/odf2mht/odf2mht.1
+++ b/odf2mht/odf2mht.1
@@ -1,51 +1,234 @@
-.\"Generated by db2man.xsl. Don't modify this, modify the source.
-.de Sh \" Subsection
+.\"     Title: odf2mht
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "ODF2MHT" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
 .br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
 ..
-.de Ip \" List item
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
 .br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.TH "" 1 "" "" ""
-.SH NAME
-odf2mht \- Convert ODF to HTML archive
-.SH "SYNOPSIS"
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
 .ad l
-.hy 0
-.HP 8
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+odf2mht \- Convert ODF to HTML archive
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodf2mht\fR\ 'u
 \fBodf2mht\fR \fIpath\fR
-.ad
-.hy
-
-.SH "DESCRIPTION"
-
+.fam
+.SH "Description"
 .PP
-\fBodf2mht\fR is a program that will create a MIME\-encapsulated web archive (\&.mht) format that can be read by Internet Explorer and many email programs such as MS\-Outlook\&. It will write the web archive to stdout\&. IE6 seems to have problems with large MHT files\&.
-
+\fBodf2mht\fR
+is a program that will create a MIME\-encapsulated web archive (\&.mht) format that can be read by Internet Explorer and many email programs such as MS\-Outlook\&. It will write the web archive to stdout\&. IE6 seems to have problems with large MHT files\&.
 .PP
 "Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
-
-.SH "REFERENCES"
-HTTRACK (http://www\&.httrack\&.com/) can create such archives with the \-%M option\&.http://en\&.wikipedia\&.org/wiki/MHTMLhttp://www\&.dsv\&.su\&.se/~jpalme/ietf/mhtml\&.htmlhttp://users\&.otenet\&.gr/~geosp/kmhtconvert/http://www\&.faqs\&.org/rfcs/rfc2557\&.html
-.SH "EXAMPLE"
-
-.IP
+.SH "References"
+.RS 4
+HTTRACK (http://www\&.httrack\&.com/) can create such archives with the \-%M option\&.
+.RE
+.RS 4
+http://en\&.wikipedia\&.org/wiki/MHTML
+.RE
+.RS 4
+http://www\&.dsv\&.su\&.se/~jpalme/ietf/mhtml\&.html
+.RE
+.RS 4
+http://users\&.otenet\&.gr/~geosp/kmhtconvert/
+.RE
+.RS 4
+http://www\&.faqs\&.org/rfcs/rfc2557\&.html
+.RE
+.SH "Example"
+.sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
+.nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
 
 odf2mht odf\-file
-
-.SH "SEE ALSO"
-
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
+.fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "See Also"
 .PP
- \fBodftools\fR(1), \fBodf2war\fR(1), \fBmailodf\fR(1)
 
+\fBodftools\fR(1),
+\fBodf2war\fR(1),
+\fBmailodf\fR(1)
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odf2mht/odf2mht.xml b/odf2mht/odf2mht.xml
index 6030d89..1f3a9df 100644
--- a/odf2mht/odf2mht.xml
+++ b/odf2mht/odf2mht.xml
@@ -2,6 +2,17 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odf2mht">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>odf2mht</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
 <refnamediv>
 <refname>odf2mht</refname>
 <refpurpose>Convert ODF to HTML archive</refpurpose>
diff --git a/odf2war/odf2war.1 b/odf2war/odf2war.1
index 1c3d570..fcfded1 100644
--- a/odf2war/odf2war.1
+++ b/odf2war/odf2war.1
@@ -1,49 +1,217 @@
-.\"Generated by db2man.xsl. Don't modify this, modify the source.
-.de Sh \" Subsection
+.\"     Title: odf2war
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "ODF2WAR" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
 .br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
 ..
-.de Ip \" List item
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
 .br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.TH "" 1 "" "" ""
-.SH NAME
-odf2war \- Convert ODF to KDE web archive
-.SH "SYNOPSIS"
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
 .ad l
-.hy 0
-.HP 8
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+odf2war \- Convert ODF to KDE web archive
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodf2war\fR\ 'u
 \fBodf2war\fR \fIpath\fR
-.ad
-.hy
-
-.SH "DESCRIPTION"
-
+.fam
+.SH "Description"
 .PP
-\fBodf2war\fR is a program that will create a KDE Web Archive (\&.war) that can be read by Konqueror filemanager\&. It will write the web archive to stdout\&. The WAR plugin is part of the kdeaddons package\&.
-
+\fBodf2war\fR
+is a program that will create a KDE Web Archive (\&.war) that can be read by Konqueror filemanager\&. It will write the web archive to stdout\&. The WAR plugin is part of the kdeaddons package\&.
 .PP
 "Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
-
-.SH "EXAMPLE"
-
-.IP
+.SH "Example"
+.sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
+.nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
 
 odf2war odf\-file
-
-.SH "SEE ALSO"
-
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
+.fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "See Also"
 .PP
- \fBodftools\fR(1), \fBodf2mht\fR(1)
 
+\fBodftools\fR(1),
+\fBodf2mht\fR(1)
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odf2war/odf2war.xml b/odf2war/odf2war.xml
index c97e200..44bd057 100644
--- a/odf2war/odf2war.xml
+++ b/odf2war/odf2war.xml
@@ -2,6 +2,17 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odf2war">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>odf2war</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
 <refnamediv>
 <refname>odf2war</refname>
 <refpurpose>Convert ODF to KDE web archive</refpurpose>
diff --git a/odf2xhtml/odf2xhtml.1 b/odf2xhtml/odf2xhtml.1
index e8cbd31..902de00 100644
--- a/odf2xhtml/odf2xhtml.1
+++ b/odf2xhtml/odf2xhtml.1
@@ -1,39 +1,221 @@
 .\"     Title: odf2xhtml
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/>
-.\"      Date: 10/17/2008
-.\"    Manual: 
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
 .\"    Source: odfpy
+.\"  Language: English
 .\"
-.TH "ODF2XHTML" "1" "10/17/2008" "odfpy" ""
+.TH "ODF2XHTML" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
-odf2xhtml - Convert ODF to HTML
-.SH "SYNOPSIS"
-.HP 10
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+odf2xhtml \- Convert ODF to HTML
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodf2xhtml\fR\ 'u
 \fBodf2xhtml\fR [\-e] \fIpath\fR
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
 \fBodf2xhtml\fR
-is a program that will create a webpage (\.html) from the input file and will write the webpage to stdout\.
+is a program that will create a webpage (\&.html) from the input file and will write the webpage to stdout\&.
 .PP
-"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\.
-.SH "OPTIONS"
+"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
+.SH "Options"
 .PP
 \-p, \-\-plain
 .RS 4
-The \-p flag will generate HTML without CSS\.
+The \-p flag will generate HTML without CSS\&.
 .RE
-.SH "EXAMPLE"
+.SH "Example"
 .sp
+.if n \{\
 .RS 4
+.\}
+.fam C
+.ps -1
 .nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
 odf2xhtml odf\-file
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
+.fam
+.ps +1
+.if n \{\
 .RE
-.SH "SEE ALSO"
+.\}
+.SH "See Also"
 .PP
 \fBodf2mht\fR(1)
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odf2xhtml/odf2xhtml.xml b/odf2xhtml/odf2xhtml.xml
index 86803a0..5a27c9c 100644
--- a/odf2xhtml/odf2xhtml.xml
+++ b/odf2xhtml/odf2xhtml.xml
@@ -3,10 +3,14 @@
 <refentry id="odf2xhtml">
   <refentryinfo>
     <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
   </refentryinfo>
   <refmeta>
     <refentrytitle>odf2xhtml</refentrytitle>
     <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
   </refmeta>
   <refnamediv>
     <refname>odf2xhtml</refname>
diff --git a/odf2xml/odf2xml.1 b/odf2xml/odf2xml.1
index b843a8a..26737fd 100644
--- a/odf2xml/odf2xml.1
+++ b/odf2xml/odf2xml.1
@@ -1,49 +1,231 @@
 .\"     Title: odf2xml
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/>
-.\"      Date: 08/26/2008
-.\"    Manual: 
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
 .\"    Source: odfpy
+.\"  Language: English
 .\"
-.TH "ODF2XML" "1" "08/26/2008" "odfpy" ""
+.TH "ODF2XML" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
-odf2xml - Create OpenDocument XML file from OD? package
-.SH "SYNOPSIS"
-.HP 8
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+odf2xml \- Create OpenDocument XML file from OD? package
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodf2xml\fR\ 'u
 \fBodf2xml\fR [\-e] [\-o\ \fIoutputfile\fR] [\fIinputfile\fR]
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
-OpenDocument can be a complete office document in a single XML file\. The script will take an OpenDocument and create an XML file This is mainly useful XML processors such as XSL transformation\.
+OpenDocument can be a complete office document in a single XML file\&. The script will take an OpenDocument and create an XML file This is mainly useful XML processors such as XSL transformation\&.
 .PP
 .PP
-"Inputfile" is assumed to be an OpenDocument file\. If there is no inputfile, the program will read from standard input\.
-.SH "OPTIONS"
+"Inputfile" is assumed to be an OpenDocument file\&. If there is no inputfile, the program will read from standard input\&.
+.SH "Options"
 .PP
 \-e
 .RS 4
-Normally, images that are stored in the archive in the Pictures folder are ignored\. Using the \-e flag will
+Normally, images that are stored in the archive in the Pictures folder are ignored\&. Using the \-e flag will
 \fIembed\fR
-the images in the XML as base64\.
+the images in the XML as base64\&.
 .RE
 .PP
 \-o \fIoutputfile\fR
 .RS 4
-If output file is not specified output will be to standard out\.
+If output file is not specified output will be to standard out\&.
 .RE
-.SH "EXAMPLE"
+.SH "Example"
 .sp
+.if n \{\
 .RS 4
+.\}
+.fam C
+.ps -1
 .nf
-odf2xml \-o file\.xml  testdocument\.odt
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
+odf2xml \-o file\&.xml  testdocument\&.odt
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
+.fam
+.ps +1
+.if n \{\
 .RE
-.SH "SEE ALSO"
+.\}
+.SH "See Also"
 .PP
 \fBxml2odf\fR(1)
-.SH "BUGS"
+.SH "Bugs"
+.PP
+Doesn\'t handle external data \-\- images and such\&.
+.SH "Author"
 .PP
-Doesn\'t handle external data \-\- images and such\.
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odf2xml/odf2xml.xml b/odf2xml/odf2xml.xml
index 63f6f7c..c9efa7b 100644
--- a/odf2xml/odf2xml.xml
+++ b/odf2xml/odf2xml.xml
@@ -3,10 +3,14 @@
 <refentry id="odf2xml">
   <refentryinfo>
     <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
   </refentryinfo>
   <refmeta>
     <refentrytitle>odf2xml</refentrytitle>
     <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
   </refmeta>
   <refnamediv>
     <refname>odf2xml</refname>
diff --git a/odfimgimport/odfimgimport.1 b/odfimgimport/odfimgimport.1
index 17bd890..4193b7b 100644
--- a/odfimgimport/odfimgimport.1
+++ b/odfimgimport/odfimgimport.1
@@ -1,45 +1,227 @@
 .\"     Title: odfimgimport
-.\"    Author: 
-.\" Generator: DocBook XSL Stylesheets v1.73.2 <http://docbook.sf.net/>
-.\"      Date: 02/10/2008
-.\"    Manual: 
-.\"    Source: 
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
 .\"
-.TH "ODFIMGIMPORT" "1" "02/10/2008" "" ""
+.TH "ODFIMGIMPORT" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
-odfimgimport - Import external images
-.SH "SYNOPSIS"
-.HP 13
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+odfimgimport \- Import external images
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodfimgimport\fR\ 'u
 \fBodfimgimport\fR [\-q] [\-o\ \fIoutputfile\fR] [\fIinputfile\fR]
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
-If you copy and paste html from your webbrowser to your word processor, the pictures in the pasted text will still load the images from the Internet\. This script will import all images into the OpenDocument file\.
+If you copy and paste html from your webbrowser to your word processor, the pictures in the pasted text will still load the images from the Internet\&. This script will import all images into the OpenDocument file\&.
 .PP
-If you don\'t provide an input file, the program will read from stdin\. If the program reads from stdin, it might not know how to resolve relative filenames\. If you don\'t provide an output file, the program will import the pictures into the input file\.
-.SH "OPTIONS"
+If you don\'t provide an input file, the program will read from stdin\&. If the program reads from stdin, it might not know how to resolve relative filenames\&. If you don\'t provide an output file, the program will import the pictures into the input file\&.
+.SH "Options"
 .PP
 \-q
 .RS 4
-If there are images that can\'t be imported, odfimgimport will write how many has failed\. The \-q flag will prevent that\.
+If there are images that can\'t be imported, odfimgimport will write how many has failed\&. The \-q flag will prevent that\&.
 .RE
 .PP
 \-v
 .RS 4
-Verbose: Prints the URL of every image it tries to import and the result\.
+Verbose: Prints the URL of every image it tries to import and the result\&.
 .RE
 .PP
 \-o \fIoutputfile\fR
 .RS 4
-The file to save the output to\. "\-" is stdout\. Defaults to the input file\.
+The file to save the output to\&. "\-" is stdout\&. Defaults to the input file\&.
 .RE
-.SH "EXAMPLE"
+.SH "Example"
 .sp
+.if n \{\
 .RS 4
+.\}
+.fam C
+.ps -1
 .nf
-odfimgimport \-v \-o newfile\.odt oldfile\.odt
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
+odfimgimport \-v \-o newfile\&.odt oldfile\&.odt
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
 .RE
diff --git a/odfimgimport/odfimgimport.xml b/odfimgimport/odfimgimport.xml
index ae9e826..3088275 100644
--- a/odfimgimport/odfimgimport.xml
+++ b/odfimgimport/odfimgimport.xml
@@ -2,10 +2,16 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odfimgimport">
-
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
 <refmeta>
 <refentrytitle>odfimgimport</refentrytitle>
 <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
 </refmeta>
 
 <refnamediv>
diff --git a/odflint/odflint.1 b/odflint/odflint.1
index c77c136..69c78ed 100644
--- a/odflint/odflint.1
+++ b/odflint/odflint.1
@@ -1,28 +1,216 @@
-.\" ** You probably do not want to edit this file directly **
-.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
-.\" Instead of manually editing it, you probably should edit the DocBook XML
-.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "ODFLINT" "1" "01/21/2007" "" ""
+.\"     Title: odflint
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "ODFLINT" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
 odflint \- Check ODF file for problems
-.SH "SYNOPSIS"
-.HP 8
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodflint\fR\ 'u
 \fBodflint\fR \fIpath\fR
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
 \fBodflint\fR
-is a program that will check an ODF file and give warning if it finds something suspect. It is not able to make a full validation due to the complexity of the schema.
+is a program that will check an ODF file and give warning if it finds something suspect\&. It is not able to make a full validation due to the complexity of the schema\&.
 .PP
-"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type.
-.SH "EXAMPLE"
+"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
+.SH "Example"
 .sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
 .nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
 odflint odf\-file
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
-.SH "SEE ALSO"
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "See Also"
 .PP
+
 \fBodftools\fR(1),
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odflint/odflint.xml b/odflint/odflint.xml
index 699898a..f3e4a4f 100644
--- a/odflint/odflint.xml
+++ b/odflint/odflint.xml
@@ -2,6 +2,18 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
   "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odflint">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>odflint</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
+
 <refnamediv>
 <refname>odflint</refname>
 <refpurpose>Check ODF file for problems</refpurpose>
diff --git a/odfmeta/odfmeta.1 b/odfmeta/odfmeta.1
index 01892c9..10c2573 100644
--- a/odfmeta/odfmeta.1
+++ b/odfmeta/odfmeta.1
@@ -1,98 +1,273 @@
-.\"Generated by db2man.xsl. Don't modify this, modify the source.
-.de Sh \" Subsection
+.\"     Title: odfmeta
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "ODFMETA" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
 .br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
 ..
-.de Ip \" List item
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
 .br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.TH "" 1 "" "" ""
-.SH NAME
-odfmeta \- List or change the metadata of an ODF file
-.SH "SYNOPSIS"
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
 .ad l
-.hy 0
-.HP 8
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+odfmeta \- List or change the metadata of an ODF file
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodfmeta\fR\ 'u
 \fBodfmeta\fR [\-l] [\-c] [\-d] [\-x\ \fImetafield\fR...] [\-X\ \fImetafield\fR...] [\-a\ \fImetafield\fR...] [\-A\ \fImetafield\fR...] [\-I\ \fImetafield\fR...] [\-o\ \fIpath\fR] \fIpath\fR
-.ad
-.hy
-
-.SH "DESCRIPTION"
-
+.fam
+.SH "Description"
 .PP
-\fBodfmeta\fR is a program that will list or change the metadata in an OpenDocument file\&. This is useful for version control systems\&. You can change title, keywords, description etc\&.
-
+\fBodfmeta\fR
+is a program that will list or change the metadata in an OpenDocument file\&. This is useful for version control systems\&. You can change title, keywords, description etc\&.
 .PP
 "Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
-
-.SH "OPTIONS"
-
-.TP
+.SH "Options"
+.PP
 \-l
+.RS 4
 List (extract) all known metadata fields\&.
-
-.TP
+.RE
+.PP
 \-c
+.RS 4
 Make field values continous by normalizing white space\&. Might be convenient when postprocessing with standard (line oriented) text utilities\&.
-
-.TP
+.RE
+.PP
 \-d
+.RS 4
 Update the modification date to the current date and time\&.
-
-.TP
+.RE
+.PP
 \-x \fImetafield\fR
+.RS 4
 Extract the contents of this metafield from the file\&. Known field names are creation\-date, creator, date, description, editing\-cycles, editing\-duration, generator, initial\-creator, keyword, language, print\-date, printed\-by, subject, title, user\-defined\&. All other names are assumed to be user defined\&.
-
-.TP
+.RE
+.PP
 \-X \fImetafield\fR
+.RS 4
 Same as \-x, but also preserves/includes the field name\&.
-
-.TP
+.RE
+.PP
 \-a \fImetafield\fR
+.RS 4
 Append a custom metafield to the metadata; but only if a similar field does not exist yet\&.
-
-.TP
+.RE
+.PP
 \-A \fImetafield\fR
+.RS 4
 Append a custom metafield to the metadata in any case\&.
-
-.TP
+.RE
+.PP
 \-I \fImetafield\fR
+.RS 4
 Append a custom metafield to the metadata and remove any existing similar field\&.
-
-.TP
+.RE
+.PP
 \-o \fIpath\fR
-Filename to write modified ODT file to\&. If no \fB\-o\fR option is provided, the ODT file will be written to stdout\&.
-
-.SH "EXAMPLE"
-
-.IP
+.RS 4
+Filename to write modified ODT file to\&. If no
+\fB\-o\fR
+option is provided, the ODT file will be written to stdout\&.
+.RE
+.SH "Examples"
+.sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
+.nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
 
 odfmeta \-l odf\-file
-odfmeta \-I "title:The Little Engine That Could" \-A I\-think\-I\-can \-o newfile\&.odt source\&.odt
-
-.SH "SEE ALSO"
-
+odfmeta \-I "title:The Little Engine That Could" \-A subject:I\-think\-I\-can \-o newfile\&.odt source\&.odt
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
+.fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "See Also"
 .PP
- \fBodftools\fR(1), \fBformail\fR(1), \fBid3tag\fR(1)
-
-.SH "TODO"
 
+\fBodftools\fR(1),
+\fBformail\fR(1),
+\fBid3tag\fR(1)
+.SH "Todo"
 .PP
 Should also let the user view and change the <text:user\-field\-decl> in content\&.xml\&. Perhaps this is better done by a different application?
-
-.SH "BUGS"
-
+.SH "Bugs"
 .PP
-All known versions of OpenOffice\&.org keep only four <meta:user\-defined> elements\&. If you add more than those, you'll loose them next time you save with OpenOffice\&.org\&. KOffice keeps only one <meta:keyword> element\&.
-
+All known versions of OpenOffice\&.org keep only four <meta:user\-defined> elements\&. If you add more than those, you\'ll loose them next time you save with OpenOffice\&.org\&. KOffice keeps only one <meta:keyword> element\&.
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odfmeta/odfmeta.xml b/odfmeta/odfmeta.xml
index c84b0f1..a1ca6ee 100644
--- a/odfmeta/odfmeta.xml
+++ b/odfmeta/odfmeta.xml
@@ -2,6 +2,18 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odfmeta">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>odfmeta</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
+
 <refnamediv>
 <refname>odfmeta</refname>
 <refpurpose>List or change the metadata of an ODF file</refpurpose>
diff --git a/odfoutline/odfoutline.1 b/odfoutline/odfoutline.1
index 6894a4b..46c67c3 100644
--- a/odfoutline/odfoutline.1
+++ b/odfoutline/odfoutline.1
@@ -1,24 +1,211 @@
-.\" ** You probably do not want to edit this file directly **
-.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
-.\" Instead of manually editing it, you probably should edit the DocBook XML
-.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "ODFOUTLINE" "1" "12/13/2006" "" ""
+.\"     Title: odfoutline
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "ODFOUTLINE" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
 odfoutline \- Show outline of OpenDocument
-.SH "SYNOPSIS"
-.HP 11
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodfoutline\fR\ 'u
 \fBodfoutline\fR \fIpath\fR
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
-odfoutline is a simple program that will show the headings in the file and the level the heading is.
+odfoutline is a simple program that will show the headings in the file and the level the heading is\&.
 .PP
-"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type.
-.SH "EXAMPLE"
+"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
+.SH "Example"
 .sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
 .nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
 odfoutline odf\-file
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/odfoutline/odfoutline.xml b/odfoutline/odfoutline.xml
index c33e232..e3a1c30 100644
--- a/odfoutline/odfoutline.xml
+++ b/odfoutline/odfoutline.xml
@@ -2,6 +2,18 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odfoutline">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>odfoutline</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
+
 <refnamediv>
 <refname>odfoutline</refname>
 <refpurpose>Show outline of OpenDocument</refpurpose>
diff --git a/odfuserfield/odfuserfield.1 b/odfuserfield/odfuserfield.1
index 426429e..a1c0114 100644
--- a/odfuserfield/odfuserfield.1
+++ b/odfuserfield/odfuserfield.1
@@ -1,57 +1,265 @@
-.\" ** You probably do not want to edit this file directly **
-.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
-.\" Instead of manually editing it, you probably should edit the DocBook XML
-.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "ODFUSERFIELD" "1" "12/14/2006" "" ""
+.\"     Title: odfuserfield
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "ODFUSERFIELD" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
+.br
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
+..
+.de EM
+.if t \{\
+.br
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
+..
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
 .\" disable hyphenation
 .nh
 .\" disable justification (adjust text to left margin only)
 .ad l
-.SH "NAME"
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
 odfuserfield \- List or change the user\-field declarations in an ODF file
-.SH "SYNOPSIS"
-.HP 13
+.SH "Synopsis"
+.fam C
+.HP \w'\fBodfuserfield\fR\ 'u
 \fBodfuserfield\fR [\-l] [\-L] [\-x\ \fIfield\fR...] [\-X\ \fIfield\fR...] [\-s\ \fIfield:value\fR...] [\-o\ \fIpath\fR] \fIpath\fR
-.SH "DESCRIPTION"
+.fam
+.SH "Description"
 .PP
+
 \fBOdfuserfield\fR
-is a program that will list or change the user variable declarations in an OpenDocument file. There are two kinds of variables in OpenDocument. Simple variables can take different values at different positions, throughout a document. User variables have the same value throughout a document. Due to the latter's global nature it is safe to change them with an external application.
+is a program that will list or change the user variable declarations in an OpenDocument file\&. There are two kinds of variables in OpenDocument\&. Simple variables can take different values at different positions, throughout a document\&. User variables have the same value throughout a document\&. Due to the latter\'s global nature it is safe to change them with an external application\&.
 .PP
 Use
 \fBodfuserfield\fR
-to fill out form letters before printing or giving to the user.
+to fill out form letters before printing or giving to the user\&.
+.PP
+"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type\&.
+.SH "Options"
 .PP
-"Path" is assumed to be an OpenDocument file of text, spreadsheet or presentation type.
-.SH "OPTIONS"
-.TP
 \-l
-List (extract) all known user\-fields.
-.TP
+.RS 4
+List (extract) all known user\-fields\&.
+.RE
+.PP
 \-L
-List (extract) all known user\-fields with type and value.
-.TP
+.RS 4
+List (extract) all known user\-fields with type and value\&.
+.RE
+.PP
 \-x \fIfield\fR
-Extract the contents of this field from the file.
-.TP
+.RS 4
+Extract the contents of this field from the file\&.
+.RE
+.PP
 \-X \fIfield\fR
-Same as \-x, but also preserves/includes the field name and type.
-.TP
+.RS 4
+Same as \-x, but also preserves/includes the field name and type\&.
+.RE
+.PP
 \-s \fIfield:value\fR
-Set the value of an existing user field. The field type will be the same.
-.TP
+.RS 4
+Set the value of an existing user field\&. The field type will be the same\&.
+.RE
+.PP
 \-o \fIpath\fR
-Filename to write modified ODT file to. If no
+.RS 4
+Filename to write modified ODT file to\&. If no
 \fB\-o\fR
-option is provided, the ODT file will be written to stdout.
-.SH "EXAMPLE"
+option is provided, the ODT file will be written to stdout\&.
+.RE
+.SH "Example"
 .sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
 .nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
+
 odfuserfield \-L odf\-file
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
 .fi
-.SH "SEE ALSO"
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "See Also"
 .PP
+
 \fBformail\fR(1),
 \fBid3tag\fR(1)
-.SH "TODO"
+.SH "Todo"
+.PP
+Implement formulas\&. See OpenDocument v1\&.0 specification section 6\&.3\&.5\&. This requires a different syntax for \-s arguments\&.
+.SH "Authors"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
 .PP
-Implement formulas. See OpenDocument v1.0 specification section 6.3.5. This requires a different syntax for \-s arguments.
+\fBMichael Howitz\fR
+.br
+gocept gmbh & co\&. kg
+.RS 4
+Refactoring
+.RE
diff --git a/odfuserfield/odfuserfield.xml b/odfuserfield/odfuserfield.xml
index 8aabd1e..6f5c4ca 100644
--- a/odfuserfield/odfuserfield.xml
+++ b/odfuserfield/odfuserfield.xml
@@ -2,6 +2,26 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="odfuserfield">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author>
+      <firstname>Søren</firstname><surname>Roug</surname>
+      <contrib>Original author</contrib>
+    </author>
+    <author>
+      <firstname>Michael</firstname><surname>Howitz</surname>
+      <affiliation>
+      <orgname>gocept gmbh & co. kg</orgname>
+      </affiliation>
+      <contrib>Refactoring</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>odfuserfield</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
+
 <refnamediv>
 <refname>odfuserfield</refname>
 <refpurpose>List or change the user-field declarations in an ODF file</refpurpose>
diff --git a/setup.py b/setup.py
index f367b13..0893f97 100644
--- a/setup.py
+++ b/setup.py
@@ -25,6 +25,7 @@ version = '0.8.1dev'
 
 if platform.system() in ('Linux','Unix'):
     man1pages = [('share/man/man1', [
+           'csv2ods/csv2ods.1',
            'mailodf/mailodf.1',
            'odf2xhtml/odf2xhtml.1',
            'odf2mht/odf2mht.1',
@@ -94,6 +95,7 @@ Take also a look at the contrib folder."""
       url='http://opendocumentfellowship.com/development/projects/odfpy',
       packages=['odf'],
       scripts=[
+          'csv2ods/csv2ods',
           'mailodf/mailodf',
           'odf2xhtml/odf2xhtml',
           'odf2mht/odf2mht',
diff --git a/xml2odf/xml2odf.1 b/xml2odf/xml2odf.1
index 90d8171..92a1417 100644
--- a/xml2odf/xml2odf.1
+++ b/xml2odf/xml2odf.1
@@ -1,66 +1,233 @@
-.\"Generated by db2man.xsl. Don't modify this, modify the source.
-.de Sh \" Subsection
+.\"     Title: xml2odf
+.\"    Author: S\(/oren Roug
+.\" Generator: DocBook XSL Stylesheets v1.74.0 <http://docbook.sf.net/>
+.\"      Date: 01/04/2009
+.\"    Manual: User commands
+.\"    Source: odfpy
+.\"  Language: English
+.\"
+.TH "XML2ODF" "1" "01/04/2009" "odfpy" "User commands"
+.\" -----------------------------------------------------------------
+.\" * (re)Define some macros
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" toupper - uppercase a string (locale-aware)
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de toupper
+.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
+\\$*
+.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH-xref - format a cross-reference to an SH section
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de SH-xref
+.ie n \{\
+.\}
+.toupper \\$*
+.el \{\
+\\$*
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SH - level-one heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SH
+.\" put an extra blank line of space above the head in non-TTY output
+.if t \{\
+.sp 1
+.\}
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[an-margin]u
+.ti 0
+.HTML-TAG ".NH \\n[an-level]"
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+\." make the size of the head bigger
+.ps +3
+.ft B
+.ne (2v + 1u)
+.ie n \{\
+.\" if n (TTY output), use uppercase
+.toupper \\$*
+.\}
+.el \{\
+.nr an-break-flag 0
+.\" if not n (not TTY), use normal case (not uppercase)
+\\$1
+.in \\n[an-margin]u
+.ti 0
+.\" if not n (not TTY), put a border/line under subheading
+.sp -.6
+\l'\n(.lu'
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" SS - level-two heading that works better for non-TTY output
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de1 SS
+.sp \\n[PD]u
+.nr an-level 1
+.set-an-margin
+.nr an-prevailing-indent \\n[IN]
+.fi
+.in \\n[IN]u
+.ti \\n[SN]u
+.it 1 an-trap
+.nr an-no-space-flag 1
+.nr an-break-flag 1
+.ps \\n[PS-SS]u
+\." make the size of the head bigger
+.ps +2
+.ft B
+.ne (2v + 1u)
+.if \\n[.$] \&\\$*
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BB/BE - put background/screen (filled box) around block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BB
+.if t \{\
+.sp -.5
 .br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
+.in +2n
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
+.de EB
+.if t \{\
+.if "\\$2"adjust-for-leading-newline" \{\
+.sp -1
+.\}
+.br
+.di
+.in
+.ll
+.gcolor
+.nr BW \\n(.lu-\\n(.i
+.nr BH \\n(dn+.5v
+.ne \\n(BHu+.5v
+.ie "\\$2"adjust-for-leading-newline" \{\
+\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.el \{\
+\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
+.\}
+.in 0
+.sp -.5v
+.nf
+.BX
+.in
+.sp .5v
+.fi
+.\}
+..
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" BM/EM - put colored marker in margin next to block of text
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.de BM
+.if t \{\
+.br
+.ll -2n
+.gcolor red
+.di BX
+.\}
 ..
-.de Ip \" List item
+.de EM
+.if t \{\
 .br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
+.di
+.ll
+.gcolor
+.nr BH \\n(dn
+.ne \\n(BHu
+\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
+.in 0
+.nf
+.BX
+.in
+.fi
+.\}
 ..
-.TH "" 1 "" "" ""
-.SH NAME
-xml2odf \- Create OD? package from OpenDocument in XML form
-.SH "SYNOPSIS"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
 .ad l
-.hy 0
-.HP 8
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "Name"
+xml2odf \- Create ODF package from OpenDocument in XML form
+.SH "Synopsis"
+.fam C
+.HP \w'\fBxml2odf\fR\ 'u
 \fBxml2odf\fR [\-o\ \fIoutputfile\fR] [\-s] [\fIinputfile\fR]
-.ad
-.hy
-
-.SH "DESCRIPTION"
-
+.fam
+.SH "Description"
 .PP
 OpenDocument can be a complete office document in a single XML file\&. The script will take such a document and create a package\&. This is mainly useful as a postprocesser of a program producing XML, such as a stylesheet\&.
-
 .PP
-"Inputfile" is assumed to be an OpenDocument file in XML form\&. If there is no inputfile, the program will read from standard input\&. The flag \-s adds correct suffix to the filename according to what mime type is found in the XML file, in cause you don't know already what document type you are packaging\&.
-
+"Inputfile" is assumed to be an OpenDocument file in XML form\&. If there is no inputfile, the program will read from standard input\&. The flag \-s adds correct suffix to the filename according to what mime type is found in the XML file, in cause you don\'t know already what document type you are packaging\&.
 .PP
 If output file is not specified output will be to standard out\&.
-
 .PP
-Section 2\&.1\&.1 of Open Document Format for Office Applications says that the [content\&.xml] file contains the document content, along with the \fIautomatic styles\fR needed for the document content\&. The [styles\&.xml] file contains all the named styles of a document, along with the \fIautomatic styles\fR needed for the named styles\&. The application doesn't know which automatic style is needed for what, so it puts the same set of automatic styles into both files\&.
-
+Section 2\&.1\&.1 of
+Open Document Format for Office Applications
+says that the [content\&.xml] file contains the document content, along with the
+\fIautomatic styles\fR
+needed for the document content\&. The [styles\&.xml] file contains all the named styles of a document, along with the
+\fIautomatic styles\fR
+needed for the named styles\&. The application doesn\'t know which automatic style is needed for what, so it puts the same set of automatic styles into both files\&.
 .PP
-One could assume that the inverse operation would be easier, but OpenOffice\&.org is quite happy to use the same names for two different styles\&. For instance, a style used inside <style:footer> can have the same name as one used inside <office:text> but be a different paragraph style\&.
-
-.SH "EXAMPLE"
-
-.IP
+One could assume that the inverse operation would be easier, but OpenOffice\&.org is quite happy to use the same names for two different automatic styles\&. For instance, a style used inside <style:footer> can have the same name as one used inside <office:text> but be a different paragraph style\&. This is reported as bug #90494 (http://www\&.openoffice\&.org/issues/show_bug\&.cgi?id=90494)
+.SH "Example"
+.sp
+.if n \{\
+.RS 4
+.\}
+.fam C
+.ps -1
+.nf
+.if t \{\
+.sp -1
+.\}
+.BB lightgray adjust-for-leading-newline
+.sp -1
 
 xml2odf \-o testdocument \-s xml\-file
-
-.SH "SEE ALSO"
-
+.EB lightgray adjust-for-leading-newline
+.if t \{\
+.sp 1
+.\}
+.fi
+.fam
+.ps +1
+.if n \{\
+.RE
+.\}
+.SH "See Also"
 .PP
- \fBodftools\fR(1), \fBodf2xml\fR(1)
-
-.SH "BUGS"
 
+\fBodftools\fR(1),
+\fBodf2xml\fR(1)
+.SH "Bugs"
 .PP
-Doesn't handle external data \-\- images and such\&.
-
+Doesn\'t handle external data \-\- images and such\&.
 .PP
 The library used for the parsing of XML expands empty elements from <element/> to <element></element>\&. It should not have an effect on the document parsing\&.
-
+.SH "Author"
+.PP
+\fBS\(/oren Roug\fR
+.RS 4
+Original author
+.RE
diff --git a/xml2odf/xml2odf.xml b/xml2odf/xml2odf.xml
index 6375325..4b651cc 100644
--- a/xml2odf/xml2odf.xml
+++ b/xml2odf/xml2odf.xml
@@ -2,9 +2,21 @@
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
    "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
 <refentry id="xml2odf">
+  <refentryinfo>
+    <productname>odfpy</productname>
+    <author><firstname>Søren</firstname><surname>Roug</surname>
+    <contrib>Original author</contrib>
+    </author>
+  </refentryinfo>
+  <refmeta>
+    <refentrytitle>xml2odf</refentrytitle>
+    <manvolnum>1</manvolnum>
+    <refmiscinfo class="manual">User commands</refmiscinfo>
+  </refmeta>
+
 <refnamediv>
 <refname>xml2odf</refname>
-<refpurpose>Create OD? package from OpenDocument in XML form</refpurpose>
+<refpurpose>Create ODF package from OpenDocument in XML form</refpurpose>
 </refnamediv>
 
 <refsynopsisdiv>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-odf.git



More information about the Python-modules-commits mailing list