このBlogは移転しました。今後は aish.dev を御覧ください。

PowerPointは僕らのIllustratorだ

普段、図を書いたりすることはそれほどないが、書くときは適当にPowerPointを使って書いてしまうことが多い。このページの図 なんかもPowerPoint製で、けっこう綺麗な図を手軽にかけるので重宝している。

書くのが簡単なのはいいんだけど、書いたあと、画像として出力するのが微妙にめんどくさい。数が多いとうんざりする。ということで、Sphinxの文書を書くときのために、PowerPointのプレゼンテーションから画像を抽出し、png ファイルとして保存するDirectiveを作成してみた。

この拡張は標準の image ディレクティブのパラメータに加え、pptfilenameshapename を指定できる。

.. ppt-shape:: abc.png
   :pptfilename: testppt.pptx
   :shapename: shape-title

pptfilename には、PowerPointプレゼンテーションのファイル名を指定し、shapename には、図形の名前(図形の書式設定|代替テキスト|タイトル で指定した、図形のタイトル) を指定する。Sphinxで文書をビルドする時、プレゼンテーションが更新されている場合は画像を抽出してファイルに保存する。PowerPointがインストールされていない環境では、作成済みの画像をそのまま使用する。

動作環境

インストール

$ git clone git://github.com/atsuoishimoto/pptshape.git
$ cd pptshape
$ python3 setup.py install

使い方

  1. Sphinx の設定ファイル conf.py の、extentions を次のように修正する。
extensions = ['pptshape.directive']
  1. プレゼンテーションの画像は、複数の図形から構成される画像の場合はグループ化して一つの図形に変換し、図形の書式設定で 代替テキスト|タイトル に、画像の名前を指定する。
  2. rst ファイルに、次のディレクティブを記述する。
.. ppt-shape:: abc.png
   :pptfilename: testppt.pptx
   :shapename: shape-title

ppt-shapeディレクティブは、Imageディレクティブと同じ機能をサポートしており、PowerPointがインストールされていない環境(Unix,Macなどを含む)では、Imageディレクティブとまったく同じ動作となる。

ppt-shapeは pptfilename で指定したプレゼンテーションから、shapename というタイトルの画像を検索し、引数として指定した画像ファイルとして出力する。文書のコンパイル時、プレゼンテーションファイルと画像ファイルの更新日付をチェックし、更新された画像ファイルだけを生成する。