Sphinx のマニュアル(rst2pdf)にそってPDFをつくろうとしたがハマったので覚書。
writing MyProject... [ERROR] pdfbuilder.py:129 get_language() takes exactly 2 arguments (1 given) Traceback (most recent call last): File "C:\Python27\lib\site-packages\rst2pdf-0.16-py2.7.egg\rst2pdf\pdfbuilder.py", line 126, in write docwriter.write(doctree, destination) File "C:\Python27\lib\site-packages\docutils-0.8.1-py2.7.egg\docutils\writers\__init__.py", line 77, in write self.translate() File "C:\Python27\lib\site-packages\rst2pdf-0.16-py2.7.egg\rst2pdf\pdfbuilder.py", line 533, in translate langmod = languages.get_language('en') TypeError: get_language() takes exactly 2 arguments (1 given) FAILED
ってなったので、
C:\Python27\lib\site-packages\docutils-0.8.1-py2.7.egg\docutils\languages\__init__.pyの第二引数にデフォルトでNoneを入れれって書いてあったのでそれで対応。
実行したら成功した。結構時間が掛かる。
なお、Windowsでやったのだが、その場合はMakefileではなくmake.batの修正が必要。
マニュアルにこう書いてあるので
pdf: $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) _build/pdf @echo @echo "Build finished. The PDF files are in _build/pdf."
それをほぼそのままコピーしてきてBAT用にアレンジ。
_buildとかは %BUILDDIR% を使うようにしてある(batファイルのその前の行あたりをコピー)
個人的には "pdf" って書いてるとことも %1で代用していいんじゃないかと思うんだけど。
if "%1" == "pdf" ( %SPHINXBUILD% -b pdf %ALLSPHINXOPTS% %BUILDDIR%/pdf if errorlevel 1 exit /b 1 echo. echo.Build finished. The PDF files are in %BUILDDIR%/pdf. goto end )
細かく言うなら
ここも書き換えたりするんだろうね。
echo. doctest to run all doctests embedded in the documentation if enabled echo. pdf to make PDF Document goto end
覚書なので
pdf_font_path = ['/usr/share/fonts']
には、Windowsの場合
pdf_font_path = ['C:\WINDOWS\Fonts']
と書いておけばいいみたいです