reStructuredTextをdocx(Word形式)ファイルに変換してみた
reStructuredTextをWord(docx)形式に変換してみました。 試した環境は下記です。
Windows 8.1
pandoc
Word 2013
目次
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で開くと下図の様になります。
toctreeのリンク先のファイルは読んでくれませんでした。
PandocでHTML経由でdocxに出力してみた
Pandocの入力フォーマットにhtmlというのがあります。どうせSphinxでHTMLに変換してるなら、それをPandocに呼んでもらえば良いんじゃない?ということで試してみました。
> pandoc -o test.dox ./_build/html/index.html
これで出来上がったtest.docxをWordで開くと下図の様になります。
目次はあるけど、本文が無い。
SphinxでSingleHTMLにしてPandocでdocxにしてみた
要はSphinxから1つのファイルとして出力されれば良いわけですね。ということで、SingleHTML経由にしてみました。
> make singlehtml
> pandoc -o test.docx ./_build/singlehtml/index.html
これで出来上がったtest.docxをWordで開くと下図の様になります。
本文は入ったのですが、図が入らず。惜しい。
まとめ
reStructuredTextで文書を書くと、toctreeディレクティブを使って、ファイルを細かく分割しながら文書を作っていくことが多いのではないでしょうか。そうすると、Sphinxで1つのファイルにまとめてからPandocに読ませるか、Pandocでdocxに変換してからWordで合成するかということになります。
となると、下記が良いのでしょうか。
SphinxでSingleHTMLに出力し、SingleHTMLをPandocでdocxに変換する。
コマンドラインでrstファイルを結合して、Pandocでdocxに変換する。
公開日
広告
PCカテゴリの投稿
- BlenderでマルチGPUをしてみた
- CPUとGPUの組み合わせでBlenderのレンダリングをしてみた
- Jupyter Notebookがすごい
- Jupyter notebookをWindows10にインストール
- SphinxにTwitter Cardを出力させる
- Surface Pro 6でトリプルディスプレイ
- Surface Pro 6のBlenderのレンダリング性能を測る
- USキーボードでプログラミングが捗るというのは本当なのか
- USキーボードの使用をやめた話
- Visual Studio CodeでSSHを使ってサーバーのファイルを編集する
- Visual Studio Codeで定型文(スニペット)を入力する
- reStructuredTextをdocx(Word形式)ファイルに変換してみた
- 安売りのPCにLinuxを入れようとしてハマった話
- 用紙のサイズのまとめ