Create docx documents from org mode
===================================
Last edited: $Date: 2021/05/30 16:30:52 $
Plain text is the best format
-----------------------------
In my spare time I write articles and other content. Depending
on the publisher, this has to be either in odt or in docx
format.
Of course, I like to write those texts in a decent editor and
write in a plain text format.
For several years I have used an awk script that converted
text from a markdownish format to fodt, see [Advantages of
FODT format in LibreOffice](
http://box.matto.nl/advantages-of-
fodt-format-in-libreoffice.html).
This created sometimes some issues with special characters
like '<' and '>'. For this reason I abandoned this method and
started to use Pandoc for the conversion. This way I could
still write in plain text (in Markdown format) with all the
advantages of using plain text, like the option to use a
decent editor, and the use of version control tools.
Another very important element of writing in plain text is
that the writer can fully focus on the content and doesn't
have to worry about bullet-size, paragraph formatting,
indention et cetera. The formatting is done afterward, by
tools like Groff, LaTeX, Markdown.pl and so on.
Emacs org mode
--------------
A couple of months ago I decided to learn to use Emacs after
using Vi and Vim for more than two decades. Org-mode is one of
the lures of Emacs, and it comes with some powerful export
functionalities.
Out of the box, org mode can export to the odt format and
creates a very rich document.
Unfortunately, the default formatting does not fit the
requirements of the publishers I work with. It has to be
trimmed down a bit.
Changing some export options
----------------------------
At the first lines of any org file we can enter some meta-data
options. It turns out we can use this to make the document
looks more like what the publisher expects.
### Disable title and author lines
With the following line we disable the creation of the title
line and the author line at the top of the odt- or docx
document:
#+OPTIONS: title:nil author:nil
Of course, if you want to have the title and the name of the
author at the top of your document, you can add something
like:
#+OPTIONS: title: To be and not to be
#+OPTIONS: author: Cat Schroedinger
### Disable table of contents (toc)
With the following line we disable the creation of the TOC
(table of contents) in the odt- or docx document:
#+OPTIONS: toc:nil
### Prevent superscript and subscript
In my texts I sometimes have to use underscores ( _ ), which
in a normal org-mode export results in a mix of superscript
and subscript. To prevent this and have the underscores appear
just like in the org file, at the following line:
#+OPTIONS: ^:nil
### Prevent numbering of headings
Normally, the headings of your org file will result in
numbered headings in your export.
This can be turned of with the following option:
#+OPTIONS: num:nil
### Wrap up
Combined, this gives the following lines of meta-data at the
top of the org file:
#+OPTIONS: title:nil author:nil
#+OPTIONS: toc:nil
#+OPTIONS: ^:nil
#+OPTIONS: num:nil
It not necessary to have this split out over several lines,
but it helps the readability and adaptability.
Block of mono-spaced font
-------------------------
It is easy to create a block of text that will be shown as
mono-spaced in the resulting export.
- Mark a region
- Hit Ctrl-c Ctrl-, (that is: control comma)
Emacs will show a list of options, choose s for src.
This will put markers at the edges of the region:
#+begin_src
...
#+end_src
Org mode export to odt
----------------------
Out of the box, org mode exports to the odt file format.
For this, use the key binding "Ctrl-c Ctrl-e o o", or, in
Emacs notation: "C-c C-e o o".
Org mode export to docx
-----------------------
Without additional configuration, org mode exports to the odt
file format.
This is great, because odt is a real open format, unlike docx
(Microsoft had to bribe several groups of people to get the
docx format faulty recognized as "open").
Unfortunately, for many people the odt format is confusing and
for those, we have to convert the odt format into docx.
Emacs will gladly take care of this conversion, when we add
the following line to the Emacs configuration (like e.g., in
~/.emacs, or ~/.emacs.d/init.el):
(setq org-odt-preferred-output-format "docx")
For this to work, you have to have LibreOffice installed (or
perhaps OpenOffice, I haven't tried that).
Advantages of using org mode to create an odt or docx document
--------------------------------------------------------------
There are several advantages to use org mode to convert a
plain text document into a odt file or a docx file.
- No need to install Pandoc, just Emacs is sufficient.
- Export right from within Emacs (with: "Ctrl-c Ctrl-e o o").
- Good integration of the RCS workflow in Emacs (just loop
through the RCS cycle with: "Ctrl-x v v").
- Org mode is a excellent tool for outlining
- Fits nicely in a general "everything in org mode" workflow.
Give it a try!
NB: If you don't use RCS, you can of course use any other
version control system.