読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

Sphinx 始めました

KINECTセンサープログラミングを書いたときに挫折したSphinxに、再度トライしてみました。


今回は、これ用の資料です。実践セミナーなので、スライドのほかに手元にテキストがあるといいかなぁと思い作っています。


結論から言うと、Sphinxにハマりました(詰まってるんじゃなくて、クセになるほうのw)。しばらくはこれで遊んでそうです。

せっかくなので、Sphinxに関して自分がやったことをまとめたいと思います。
大まかには次の項目です(環境はWindows 7)。

  • Sphinxのインストール
  • HTMLへの出力
  • PDFへの出力
  • ePubへの出力

Sphinxのインストール

こちらを参照しながら進めればOKです

僕のWindows環境にはだいたいTracLightningが入っているので、それに同梱されているPythonを使っています。
そのため、やることは「easy_install sphinx」だけです。便利です。

HTMLへの出力


これも難しいことはないです
Sphinxのフォルダで「make html」するだけです

PDFへの出力


一番手間取りました。おそらく設定がLinuxMac OSになっていてWindowsとは違うことに起因していると推測しています。
#あ、表の項目が文字化けするので、解決策があれば教えてほしいです。。。

インストール

こちらを参考にしました

上記サイトではexeをダウンロードして入れてますが、全部easy_installでいけました

easy_install reportlab
easy_install PIL
easy_install rst2pdf

reportlabの修正

reportlab内(C:\Python27\Lib\site-packages\reportlab-2.5-py2.7-win32.egg\reportlab\platypus\paragraph.py)でエラーが発生するので、少しいじります(thsnks こんぴろさん)。

# simple = last or abs(extraSpace)<=1e-8 or line.lineBreak ←オリジナル。コメントアウトする
simple = last or abs(extraSpace)<=1e-8 or getattr(line, 'lineBreak', False) ←追記する

もう一つ修正

Pyton2.7で環境を作ったからか、こちらの変更も必要でした

#def get_language(language_code, reporter):
def get_language(language_code, reporter=None):

設定

こちらを参考にしました。

  • conf.py
# -- Options for PDF output --------------------------------------------------

pdf_documents = [
    ('index', u'ne_academy', u'ne_academy', u'GEIS Co. Ltd.'),
    ]
pdf_stylesheets = ['sphinx','a4','ja']
pdf_font_path = ['C:\Windows\Fonts']
pdf_language = "ja"
# How many levels deep should the table of contents be?
pdf_toc_depth = 3
{
  "fontsAlias" : {
    "stdFont": "meiryo",
    "stdBold": "meiryob",
    "stdItalic": "meiryo",
    "stdBoldItalic": "meiryob",
    "stdMono": "meiryo"
  },
  "styles" : [
    ["base" , {
      "wordWrap": "CJK"
    }],
    ["literal" , {
      "wordWrap": "None"
    }]
  ]
}

ePubへの出力


とても簡単です。こちらの通りにやったらできました。できたものをiPhoneに突っ込んだら普通に読めてびっくりですw

設定

conf.pyの設定は上記を参考にしています

  • conf.pyの例(転載)
project = u'エキスパートPythonプログラミング 10章サンプル'
epub_title = project

copyright = u'Packt Publishing 2008, ASCII MEDIA WORKS Inc., Copyright 2010'
epub_author = u'2010, Tarek Ziade著、稲田直哉、渋川よしき、清水川貴之、森本哲也訳'

epub_basename = 'expert_python_programming_sample'
epub_language = u'ja'
epub_publisher = u'Packt Publishing / アスキー・メディアワークス'
epub_identifier = u'http://ascii.asciimw.jp/books/books/detail/978-4-04-868629-7.shtml'
epub_scheme = 'URL'
epub_tocdepth = 3

まとめ

マークアップを覚えるのが大変なのと、探しづらいのが難点ですが、とても書きやすい上に見た目もきれいにしてくれるのでモチベーションが上がります。
しばらくはSphinxでいろいろ書いてみようと思います。