Merge branch '3.x'

This commit is contained in:
Takeshi KOMIYA 2021-02-09 22:43:14 +09:00
commit 208f549b8a
4 changed files with 36 additions and 22 deletions

View File

@ -134,6 +134,7 @@ Features added
* #6550: html: Allow to use HTML permalink texts via * #6550: html: Allow to use HTML permalink texts via
:confval:`html_permalinks_icon` :confval:`html_permalinks_icon`
* #1638: html: Add permalink icons to glossary terms * #1638: html: Add permalink icons to glossary terms
* #8852: i18n: Allow to translate heading syntax in MyST-Parser
* #8649: imgconverter: Skip availability check if builder supports the image * #8649: imgconverter: Skip availability check if builder supports the image
type type
* #8573: napoleon: Allow to change the style of custom sections using * #8573: napoleon: Allow to change the style of custom sections using

View File

@ -24,6 +24,7 @@ html_theme_path = ['_themes']
modindex_common_prefix = ['sphinx.'] modindex_common_prefix = ['sphinx.']
html_static_path = ['_static'] html_static_path = ['_static']
html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']} html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']}
html_title = 'Sphinx documentation'
html_additional_pages = {'index': 'index.html'} html_additional_pages = {'index': 'index.html'}
html_use_opensearch = 'https://www.sphinx-doc.org/en/master' html_use_opensearch = 'https://www.sphinx-doc.org/en/master'
html_baseurl = 'https://www.sphinx-doc.org/en/master/' html_baseurl = 'https://www.sphinx-doc.org/en/master/'

View File

@ -264,7 +264,7 @@ class Locale(SphinxTransform):
# see: http://docutils.sourceforge.net/docs/ref/doctree.html#structural-subelements # see: http://docutils.sourceforge.net/docs/ref/doctree.html#structural-subelements
if isinstance(node, nodes.title): if isinstance(node, nodes.title):
# This generates: <section ...><title>msgstr</title></section> # This generates: <section ...><title>msgstr</title></section>
msgstr = msgstr + '\n' + '-' * len(msgstr) * 2 msgstr = msgstr + '\n' + '=' * len(msgstr) * 2
patch = publish_msgstr(self.app, msgstr, source, patch = publish_msgstr(self.app, msgstr, source,
node.line, self.config, settings) node.line, self.config, settings)

View File

@ -372,9 +372,8 @@ class LaTeXTranslator(SphinxTranslator):
'fncychap' not in self.config.latex_elements): 'fncychap' not in self.config.latex_elements):
# use Sonny style if any language specified (except English) # use Sonny style if any language specified (except English)
self.elements['fncychap'] = ('\\usepackage[Sonny]{fncychap}\n' self.elements['fncychap'] = ('\\usepackage[Sonny]{fncychap}\n'
'\\ChNameVar{\\Large\\normalfont' '\\ChNameVar{\\Large\\normalfont\\sffamily}\n'
'\\sffamily}\n\\ChTitleVar{\\Large' '\\ChTitleVar{\\Large\\normalfont\\sffamily}')
'\\normalfont\\sffamily}')
self.babel = self.builder.babel self.babel = self.builder.babel
if self.config.language and not self.babel.is_supported_language(): if self.config.language and not self.babel.is_supported_language():
@ -612,7 +611,8 @@ class LaTeXTranslator(SphinxTranslator):
pass pass
def visit_productionlist(self, node: Element) -> None: def visit_productionlist(self, node: Element) -> None:
self.body.append('\n\n\\begin{productionlist}\n') self.body.append('\n\n')
self.body.append('\\begin{productionlist}\n')
self.in_production_list = 1 self.in_production_list = 1
def depart_productionlist(self, node: Element) -> None: def depart_productionlist(self, node: Element) -> None:
@ -703,9 +703,11 @@ class LaTeXTranslator(SphinxTranslator):
def visit_desc(self, node: Element) -> None: def visit_desc(self, node: Element) -> None:
if self.config.latex_show_urls == 'footnote': if self.config.latex_show_urls == 'footnote':
self.body.append('\n\n\\begin{savenotes}\\begin{fulllineitems}\n') self.body.append('\n\n')
self.body.append('\\begin{savenotes}\\begin{fulllineitems}\n')
else: else:
self.body.append('\n\n\\begin{fulllineitems}\n') self.body.append('\n\n')
self.body.append('\\begin{fulllineitems}\n')
if self.table: if self.table:
self.table.has_problematic = True self.table.has_problematic = True
@ -735,13 +737,15 @@ class LaTeXTranslator(SphinxTranslator):
if not node.get('is_multiline'): if not node.get('is_multiline'):
self._visit_signature_line(node) self._visit_signature_line(node)
else: else:
self.body.append('%\n\\pysigstartmultiline\n') self.body.append('%\n')
self.body.append('\\pysigstartmultiline\n')
def depart_desc_signature(self, node: Element) -> None: def depart_desc_signature(self, node: Element) -> None:
if not node.get('is_multiline'): if not node.get('is_multiline'):
self._depart_signature_line(node) self._depart_signature_line(node)
else: else:
self.body.append('%\n\\pysigstopmultiline') self.body.append('%\n')
self.body.append('\\pysigstopmultiline')
def visit_desc_signature_line(self, node: Element) -> None: def visit_desc_signature_line(self, node: Element) -> None:
self._visit_signature_line(node) self._visit_signature_line(node)
@ -819,8 +823,9 @@ class LaTeXTranslator(SphinxTranslator):
pass pass
def visit_seealso(self, node: Element) -> None: def visit_seealso(self, node: Element) -> None:
self.body.append('\n\n\\sphinxstrong{%s:}\n\\nopagebreak\n\n' self.body.append('\n\n')
% admonitionlabels['seealso']) self.body.append('\\sphinxstrong{%s:}\n' % admonitionlabels['seealso'])
self.body.append('\\nopagebreak\n\n')
def depart_seealso(self, node: Element) -> None: def depart_seealso(self, node: Element) -> None:
self.body.append("\n\n") self.body.append("\n\n")
@ -842,14 +847,16 @@ class LaTeXTranslator(SphinxTranslator):
if self.in_parsed_literal: if self.in_parsed_literal:
self.body.append('\\begin{footnote}[%s]' % label.astext()) self.body.append('\\begin{footnote}[%s]' % label.astext())
else: else:
self.body.append('%%\n\\begin{footnote}[%s]' % label.astext()) self.body.append('%\n')
self.body.append('\\begin{footnote}[%s]' % label.astext())
self.body.append('\\sphinxAtStartFootnote\n') self.body.append('\\sphinxAtStartFootnote\n')
def depart_footnote(self, node: Element) -> None: def depart_footnote(self, node: Element) -> None:
if self.in_parsed_literal: if self.in_parsed_literal:
self.body.append('\\end{footnote}') self.body.append('\\end{footnote}')
else: else:
self.body.append('%\n\\end{footnote}') self.body.append('%\n')
self.body.append('\\end{footnote}')
self.in_footnote -= 1 self.in_footnote -= 1
def visit_label(self, node: Element) -> None: def visit_label(self, node: Element) -> None:
@ -1310,10 +1317,11 @@ class LaTeXTranslator(SphinxTranslator):
if 'width' in node: if 'width' in node:
length = self.latex_image_length(node['width']) length = self.latex_image_length(node['width'])
if length: if length:
self.body.append('\\begin{sphinxfigure-in-table}[%s]\n' self.body.append('\\begin{sphinxfigure-in-table}[%s]\n' % length)
'\\centering\n' % length) self.body.append('\\centering\n')
else: else:
self.body.append('\\begin{sphinxfigure-in-table}\n\\centering\n') self.body.append('\\begin{sphinxfigure-in-table}\n')
self.body.append('\\centering\n')
if any(isinstance(child, nodes.caption) for child in node): if any(isinstance(child, nodes.caption) for child in node):
self.body.append('\\capstart') self.body.append('\\capstart')
self.context.append('\\end{sphinxfigure-in-table}\\relax\n') self.context.append('\\end{sphinxfigure-in-table}\\relax\n')
@ -1325,14 +1333,16 @@ class LaTeXTranslator(SphinxTranslator):
length = self.latex_image_length(node[0]['width']) length = self.latex_image_length(node[0]['width'])
self.body.append('\n\n') # Insert a blank line to prevent infinite loop self.body.append('\n\n') # Insert a blank line to prevent infinite loop
# https://github.com/sphinx-doc/sphinx/issues/7059 # https://github.com/sphinx-doc/sphinx/issues/7059
self.body.append('\\begin{wrapfigure}{%s}{%s}\n\\centering' % self.body.append('\\begin{wrapfigure}{%s}{%s}\n' %
('r' if node['align'] == 'right' else 'l', length or '0pt')) ('r' if node['align'] == 'right' else 'l', length or '0pt'))
self.body.append('\\centering')
self.context.append('\\end{wrapfigure}\n') self.context.append('\\end{wrapfigure}\n')
elif self.in_minipage: elif self.in_minipage:
self.body.append('\n\\begin{center}') self.body.append('\n\\begin{center}')
self.context.append('\\end{center}\n') self.context.append('\\end{center}\n')
else: else:
self.body.append('\n\\begin{figure}[%s]\n\\centering\n' % align) self.body.append('\n\\begin{figure}[%s]\n' % align)
self.body.append('\\centering\n')
if any(isinstance(child, nodes.caption) for child in node): if any(isinstance(child, nodes.caption) for child in node):
self.body.append('\\capstart\n') self.body.append('\\capstart\n')
self.context.append('\\end{figure}\n') self.context.append('\\end{figure}\n')
@ -1734,12 +1744,14 @@ class LaTeXTranslator(SphinxTranslator):
def visit_footnotetext(self, node: Element) -> None: def visit_footnotetext(self, node: Element) -> None:
label = cast(nodes.label, node[0]) label = cast(nodes.label, node[0])
self.body.append('%%\n\\begin{footnotetext}[%s]' self.body.append('%\n')
self.body.append('\\begin{footnotetext}[%s]'
'\\sphinxAtStartFootnote\n' % label.astext()) '\\sphinxAtStartFootnote\n' % label.astext())
def depart_footnotetext(self, node: Element) -> None: def depart_footnotetext(self, node: Element) -> None:
# the \ignorespaces in particular for after table header use # the \ignorespaces in particular for after table header use
self.body.append('%\n\\end{footnotetext}\\ignorespaces ') self.body.append('%\n')
self.body.append('\\end{footnotetext}\\ignorespaces ')
def visit_captioned_literal_block(self, node: Element) -> None: def visit_captioned_literal_block(self, node: Element) -> None:
pass pass
@ -1812,8 +1824,8 @@ class LaTeXTranslator(SphinxTranslator):
def visit_line_block(self, node: Element) -> None: def visit_line_block(self, node: Element) -> None:
if isinstance(node.parent, nodes.line_block): if isinstance(node.parent, nodes.line_block):
self.body.append('\\item[]\n' self.body.append('\\item[]\n')
'\\begin{DUlineblock}{\\DUlineblockindent}\n') self.body.append('\\begin{DUlineblock}{\\DUlineblockindent}\n')
else: else:
self.body.append('\n\\begin{DUlineblock}{0em}\n') self.body.append('\n\\begin{DUlineblock}{0em}\n')
if self.table: if self.table: