mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
0. do not escape Unicode Greek letters via LaTeX math mark-up: pass them through un-modified to LaTeX document, 1. if "fontenc" receives extra option LGR, then pdflatex will support Unicode Greek letters (not in math), and with extra option T2A it will support (most) Unicode Cyrillic letters. 2. for pdflatex with LGR, this will use "textalpha" LaTeX package and "substitutefont" package to set up some automatic font substitution to work around the unavailability of Greek with "times" package (which is default font package chosen by Sphinx for pdflatex), same with T2A and "substitutefont" for Cyrillic. 3. for xelatex/lualatex, set up Computer Modern Unicode as default font, as it supports Cyrillic and Greek scripts, 4. for platex, don't do anything special as the engine already has its default font supporting Cyrillic and Greek (even in math mode!) Closes: #5251 Fixes: #5248 Fixes: #5247
161 lines
5.5 KiB
Python
161 lines
5.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
#
|
|
# Sphinx documentation build configuration file
|
|
|
|
import re
|
|
|
|
import sphinx
|
|
|
|
|
|
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo',
|
|
'sphinx.ext.autosummary', 'sphinx.ext.extlinks',
|
|
'sphinx.ext.viewcode']
|
|
|
|
master_doc = 'contents'
|
|
templates_path = ['_templates']
|
|
exclude_patterns = ['_build']
|
|
|
|
project = 'Sphinx'
|
|
copyright = '2007-2018, Georg Brandl and the Sphinx team'
|
|
version = sphinx.__display_version__
|
|
release = version
|
|
show_authors = True
|
|
|
|
html_theme = 'sphinx13'
|
|
html_theme_path = ['_themes']
|
|
modindex_common_prefix = ['sphinx.']
|
|
html_static_path = ['_static']
|
|
html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']}
|
|
html_additional_pages = {'index': 'index.html'}
|
|
html_use_opensearch = 'http://sphinx-doc.org'
|
|
|
|
htmlhelp_basename = 'Sphinxdoc'
|
|
|
|
epub_theme = 'epub'
|
|
epub_basename = 'sphinx'
|
|
epub_author = 'Georg Brandl'
|
|
epub_publisher = 'http://sphinx-doc.org/'
|
|
epub_uid = 'web-site'
|
|
epub_scheme = 'url'
|
|
epub_identifier = epub_publisher
|
|
epub_pre_files = [('index.xhtml', 'Welcome')]
|
|
epub_post_files = [('usage/installation.xhtml', 'Installing Sphinx'),
|
|
('develop.xhtml', 'Sphinx development')]
|
|
epub_exclude_files = ['_static/opensearch.xml', '_static/doctools.js',
|
|
'_static/jquery.js', '_static/searchtools.js',
|
|
'_static/underscore.js', '_static/basic.css',
|
|
'search.html', '_static/websupport.js']
|
|
epub_fix_images = False
|
|
epub_max_image_width = 0
|
|
epub_show_urls = 'inline'
|
|
epub_use_index = False
|
|
epub_guide = (('toc', 'contents.xhtml', u'Table of Contents'),)
|
|
epub_description = 'Sphinx documentation generator system manual'
|
|
|
|
latex_documents = [('contents', 'sphinx.tex', 'Sphinx Documentation',
|
|
'Georg Brandl', 'manual', 1)]
|
|
latex_logo = '_static/sphinx.png'
|
|
latex_elements = {
|
|
'fontenc': r'\usepackage[LGR,T2A,T1]{fontenc}',
|
|
'fontpkg': r'''
|
|
\usepackage[sc]{mathpazo}
|
|
\usepackage[scaled]{helvet}
|
|
\usepackage{courier}
|
|
\substitutefont{LGR}{\rmdefault}{udidot}
|
|
\substitutefont{LGR}{\sfdefault}{neohellenic}
|
|
\substitutefont{LGR}{\ttdefault}{cmtt}
|
|
\substitutefont{T2A}{\rmdefault}{fcm}
|
|
\substitutefont{T2A}{\sfdefault}{fcs}
|
|
\substitutefont{T2A}{\ttdefault}{fct}
|
|
''',
|
|
'passoptionstopackages': '\\PassOptionsToPackage{svgnames}{xcolor}',
|
|
'preamble': '\\DeclareUnicodeCharacter{229E}{\\ensuremath{\\boxplus}}',
|
|
'fvset': '\\fvset{fontsize=auto}',
|
|
# fix missing index entry due to RTD doing only once pdflatex after makeindex
|
|
'printindex': r'''
|
|
\IfFileExists{\jobname.ind}
|
|
{\footnotesize\raggedright\printindex}
|
|
{\begin{sphinxtheindex}\end{sphinxtheindex}}
|
|
''',
|
|
}
|
|
latex_show_urls = 'footnote'
|
|
latex_use_xindy = True
|
|
|
|
autodoc_member_order = 'groupwise'
|
|
todo_include_todos = True
|
|
extlinks = {'duref': ('http://docutils.sourceforge.net/docs/ref/rst/'
|
|
'restructuredtext.html#%s', ''),
|
|
'durole': ('http://docutils.sourceforge.net/docs/ref/rst/'
|
|
'roles.html#%s', ''),
|
|
'dudir': ('http://docutils.sourceforge.net/docs/ref/rst/'
|
|
'directives.html#%s', '')}
|
|
|
|
man_pages = [
|
|
('contents', 'sphinx-all', 'Sphinx documentation generator system manual',
|
|
'Georg Brandl', 1),
|
|
('man/sphinx-build', 'sphinx-build', 'Sphinx documentation generator tool',
|
|
'', 1),
|
|
('man/sphinx-quickstart', 'sphinx-quickstart', 'Sphinx documentation '
|
|
'template generator', '', 1),
|
|
('man/sphinx-apidoc', 'sphinx-apidoc', 'Sphinx API doc generator tool',
|
|
'', 1),
|
|
('man/sphinx-autogen', 'sphinx-autogen', 'Generate autodoc stub pages',
|
|
'', 1),
|
|
]
|
|
|
|
texinfo_documents = [
|
|
('contents', 'sphinx', 'Sphinx Documentation', 'Georg Brandl',
|
|
'Sphinx', 'The Sphinx documentation builder.', 'Documentation tools',
|
|
1),
|
|
]
|
|
|
|
# We're not using intersphinx right now, but if we did, this would be part of
|
|
# the mapping:
|
|
intersphinx_mapping = {'python': ('https://docs.python.org/3/', None)}
|
|
|
|
# Sphinx document translation with sphinx gettext feature uses these settings:
|
|
locale_dirs = ['locale/']
|
|
gettext_compact = False
|
|
|
|
|
|
# -- Extension interface -------------------------------------------------------
|
|
|
|
from sphinx import addnodes # noqa
|
|
|
|
event_sig_re = re.compile(r'([a-zA-Z-]+)\s*\((.*)\)')
|
|
|
|
|
|
def parse_event(env, sig, signode):
|
|
m = event_sig_re.match(sig)
|
|
if not m:
|
|
signode += addnodes.desc_name(sig, sig)
|
|
return sig
|
|
name, args = m.groups()
|
|
signode += addnodes.desc_name(name, name)
|
|
plist = addnodes.desc_parameterlist()
|
|
for arg in args.split(','):
|
|
arg = arg.strip()
|
|
plist += addnodes.desc_parameter(arg, arg)
|
|
signode += plist
|
|
return name
|
|
|
|
|
|
def setup(app):
|
|
from sphinx.ext.autodoc import cut_lines
|
|
from sphinx.util.docfields import GroupedField
|
|
app.connect('autodoc-process-docstring', cut_lines(4, what=['module']))
|
|
app.add_object_type('confval', 'confval',
|
|
objname='configuration value',
|
|
indextemplate='pair: %s; configuration value')
|
|
fdesc = GroupedField('parameter', label='Parameters',
|
|
names=['param'], can_collapse=True)
|
|
app.add_object_type('event', 'event', 'pair: %s; event', parse_event,
|
|
doc_field_types=[fdesc])
|
|
|
|
# workaround for RTD
|
|
from sphinx.util import logging
|
|
logger = logging.getLogger(__name__)
|
|
app.info = lambda *args, **kwargs: logger.info(*args, **kwargs)
|
|
app.warn = lambda *args, **kwargs: logger.warning(*args, **kwargs)
|
|
app.debug = lambda *args, **kwargs: logger.debug(*args, **kwargs)
|