do_sphinx.py
78 lines
| 2.2 KiB
| text/x-python
|
PythonLexer
/ docs / do_sphinx.py
Fernando Perez
|
r1206 | #!/usr/bin/env python | ||
"""Script to build documentation using Sphinx. | ||||
""" | ||||
vivainio2
|
r1170 | import fileinput,os,sys | ||
Ville M. Vainio
|
r1167 | |||
Ville M. Vainio
|
r1118 | def oscmd(c): | ||
Ville M. Vainio
|
r1167 | os.system(c) | ||
vivainio2
|
r1170 | # html manual. | ||
Ville M. Vainio
|
r1167 | oscmd('sphinx-build -d build/doctrees source build/html') | ||
if sys.platform != 'win32': | ||||
vivainio2
|
r1170 | # LaTeX format. | ||
Ville M. Vainio
|
r1167 | oscmd('sphinx-build -b latex -d build/doctrees source build/latex') | ||
vivainio2
|
r1170 | |||
# Produce pdf. | ||||
Fernando Perez
|
r1206 | topdir = os.getcwd() | ||
Ville M. Vainio
|
r1167 | os.chdir('build/latex') | ||
vivainio2
|
r1170 | |||
Eric Firing
|
r3898 | # Change chapter style to section style: allows chapters to start on | ||
Ville M. Vainio
|
r1185 | # the current page. Works much better for the short chapters we have. | ||
Eric Firing
|
r3898 | # This must go in the class file rather than the preamble, so we modify | ||
Ville M. Vainio
|
r1185 | # manual.cls at runtime. | ||
chapter_cmds=r''' | ||||
% Local changes. | ||||
\renewcommand\chapter{ | ||||
\thispagestyle{plain} | ||||
\global\@topnum\z@ | ||||
\@afterindentfalse | ||||
\secdef\@chapter\@schapter | ||||
} | ||||
\def\@makechapterhead#1{ | ||||
\vspace*{10\p@} | ||||
{\raggedright \reset@font \Huge \bfseries \thechapter \quad #1} | ||||
\par\nobreak | ||||
\hrulefill | ||||
\par\nobreak | ||||
\vspace*{10\p@} | ||||
} | ||||
\def\@makeschapterhead#1{ | ||||
\vspace*{10\p@} | ||||
{\raggedright \reset@font \Huge \bfseries #1} | ||||
\par\nobreak | ||||
\hrulefill | ||||
\par\nobreak | ||||
\vspace*{10\p@} | ||||
} | ||||
''' | ||||
Eric Firing
|
r3898 | # manual.cls in Sphinx <= 0.6.7 became sphinxmanual.cls for 1.x | ||
manualcls = 'sphinxmanual.cls' | ||||
if not os.path.exists(manualcls): | ||||
manualcls = 'manual.cls' | ||||
Ville M. Vainio
|
r1185 | |||
unmodified=True | ||||
Eric Firing
|
r3898 | for line in fileinput.FileInput(manualcls, inplace=True): | ||
Ville M. Vainio
|
r1185 | if 'Support for module synopsis' in line and unmodified: | ||
line=chapter_cmds+line | ||||
elif 'makechapterhead' in line: | ||||
# Already have altered manual.cls: don't need to again. | ||||
unmodified=False | ||||
vivainio2
|
r1170 | print line, | ||
# Copying the makefile produced by sphinx... | ||||
Ville M. Vainio
|
r1167 | oscmd('pdflatex ipython.tex') | ||
oscmd('pdflatex ipython.tex') | ||||
oscmd('pdflatex ipython.tex') | ||||
oscmd('makeindex -s python.ist ipython.idx') | ||||
oscmd('makeindex -s python.ist modipython.idx') | ||||
oscmd('pdflatex ipython.tex') | ||||
oscmd('pdflatex ipython.tex') | ||||
Fernando Perez
|
r1206 | |||
# Create a manual/ directory with final html/pdf output | ||||
os.chdir(topdir) | ||||
oscmd('rm -rf manual') | ||||
oscmd('mkdir manual') | ||||
oscmd('cp -r build/html/*.html build/html/_static manual/') | ||||
oscmd('cp build/latex/ipython.pdf manual/') | ||||