diff --git a/manual/conf.py b/manual/conf.py index c1c4e7ec88..0d047a95e4 100644 --- a/manual/conf.py +++ b/manual/conf.py @@ -23,9 +23,7 @@ custom # General configuration # --------------------- -needs_sphinx = '1.0' - -rst_prolog = '.. |app| replace:: %s' % __appname__ +needs_sphinx = '1.2' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.addons.*') or your custom ones. diff --git a/manual/custom.py b/manual/custom.py index 1b6f7e71ff..693041e3cc 100644 --- a/manual/custom.py +++ b/manual/custom.py @@ -10,6 +10,7 @@ del init_calibre from sphinx.util.console import bold sys.path.append(os.path.abspath('../../../')) +from calibre import __appname__ from calibre.linux import entry_points, cli_index_strings from epub import EPUBHelpBuilder from latex import LaTeXHelpBuilder @@ -17,13 +18,18 @@ from latex import LaTeXHelpBuilder def substitute(app, doctree): pass +include_pat = re.compile(r'^.. include:: (\S+.rst)', re.M) + def source_read_handler(app, docname, source): - source[0] = source[0].replace('/|lang|/', '/%s/' % app.config.language) - if docname == 'index': - # Sphinx does not call source_read_handle for the .. include directive - ss = [open('simple_index.rst', 'rb').read().decode('utf-8')] - source_read_handler(app, 'simple_index', ss) - source[0] = source[0].replace('.. include:: simple_index.rst', ss[0]) + src = source[0] + src = src.replace('|lang|', app.config.language) + src = src.replace('|app|', __appname__) + # Sphinx does not call source_read_handle for the .. include directive + for m in reversed(tuple(include_pat.finditer(src))): + ss = [open(m.group(1)).read().decode('utf-8')] + source_read_handler(app, m.group(1).partition('.')[0], ss) + src = src[:m.start()] + ss[0] + src[m.end():] + source[0] = src CLI_INDEX=''' .. _cli: