tetsunosukeのnotebook

tetsunosukeのメモです

(覚書) Sphinx で make pdf するとget_language() takes exactly 2 arguments (1 given) な件

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']

と書いておけばいいみたいです