• ホーム
  • PC
  • reStructuredTextをdocx(Word形式)ファイルに変換してみた

reStructuredTextをdocx(Word形式)ファイルに変換してみた

reStructuredTextをWord(docx)形式に変換してみました。 試した環境は下記です。

  • Windows 8.1

  • pandoc

  • Word 2013

目次

  1. Sphinxはお仕事向きではないこともあります
  2. Sphinxではdocx出力できない
  3. まとめ

Sphinxはお仕事向きではないこともあります

reStructuredTextで原稿を書いてSphinxでHTMLに変換して、それを同僚に公開して情報の共有をしていたりします。日常的にプログラミングをするような職場や、LinuxやBSDなんかでお仕事する職場であれば、reStructuredTextとかMarkdownで文書を書いて共有するというのは特に抵抗感無いのかもしれません。

ただ、どこでもこういう環境というわけではありません。Markdownなんて見たことないという人が大多数の職場もあるし、それでも業務は成り立つのです。最終的には、WordやExcelまたはPDFのファイルで情報を共有します。

というわけで、reStructuredTextの文書をWordに出力してみました。

Sphinxではdocx出力できない

Sphinxから直接docx形式での出力は出来ません。ということで、Pandocというコンバータを使います。

変換する原稿

下記の文書を変換してみます。 まずindex.rstです。

.. test documentation master file, created by
   sphinx-quickstart on Mon May 16 21:36:43 2016.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to test's documentation!
================================

Contents:

.. toctree::
   :maxdepth: 2

   body

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

toctreeディレクティブでbody.rstというファイルを読み込みます。そのbody.rstは下記です。

第1層
=====

第2層
-----

第2層の本文。

第2.5層
-------

* リスト
* リスト

定義リスト
 定義の説明

1. 番号
2. 番号

第3層
^^^^^

+----+----+
| 表 | 表 |
+====+====+
| A1 | B1 |
+----+----+
| A2      |
+---------+

.. image:: img/pc_pandoc_rst_docx_01.png

リストに表に図と、いろいろ入ってます。

Pandocで直接docxに変換してみた

PandocはreStructuredTextを入力してdocxを出力できます。ということで、直接変換してみます。

> pandoc -o test.docx index.rst

このコマンドは、index.rstというファイルを読み取ってtest.docxというファイルに出力するという意味です。フォーマットを指定しなくても、拡張子からフォーマットを推定してくれます。

これで出来上がったtest.docxをWordで開くと下図の様になります。

160516-1-01

toctreeのリンク先のファイルは読んでくれませんでした。

PandocでHTML経由でdocxに出力してみた

Pandocの入力フォーマットにhtmlというのがあります。どうせSphinxでHTMLに変換してるなら、それをPandocに呼んでもらえば良いんじゃない?ということで試してみました。

> pandoc -o test.dox ./_build/html/index.html

これで出来上がったtest.docxをWordで開くと下図の様になります。

160516-1-02

目次はあるけど、本文が無い。

SphinxでSingleHTMLにしてPandocでdocxにしてみた

要はSphinxから1つのファイルとして出力されれば良いわけですね。ということで、SingleHTML経由にしてみました。

> make singlehtml
> pandoc -o test.docx ./_build/singlehtml/index.html

これで出来上がったtest.docxをWordで開くと下図の様になります。

160516-1-03

本文は入ったのですが、図が入らず。惜しい。

まとめ

reStructuredTextで文書を書くと、toctreeディレクティブを使って、ファイルを細かく分割しながら文書を作っていくことが多いのではないでしょうか。そうすると、Sphinxで1つのファイルにまとめてからPandocに読ませるか、Pandocでdocxに変換してからWordで合成するかということになります。

となると、下記が良いのでしょうか。

  • SphinxでSingleHTMLに出力し、SingleHTMLをPandocでdocxに変換する。

  • コマンドラインでrstファイルを結合して、Pandocでdocxに変換する。

公開日

広告