mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge branch '2.2.1' into 2.0
This commit is contained in:
commit
cb22be80c2
1
CHANGES
1
CHANGES
@ -56,6 +56,7 @@ Bugs fixed
|
|||||||
----------
|
----------
|
||||||
|
|
||||||
* #6641: LaTeX: Undefined control sequence ``\sphinxmaketitle``
|
* #6641: LaTeX: Undefined control sequence ``\sphinxmaketitle``
|
||||||
|
* #6710: LaTeX not well configured for Greek language as main language
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
--------
|
--------
|
||||||
|
@ -289,6 +289,11 @@ into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described
|
|||||||
|
|
||||||
.. attention::
|
.. attention::
|
||||||
|
|
||||||
|
If Greek is main language, do not use this key. Since Sphinx 2.2.1,
|
||||||
|
``xelatex`` will be used automatically as :confval:`latex_engine`.
|
||||||
|
Formerly, Sphinx did not support producing PDF via LaTeX with Greek as
|
||||||
|
main language.
|
||||||
|
|
||||||
Prior to 2.0, Unicode Greek letters were escaped to use LaTeX math
|
Prior to 2.0, Unicode Greek letters were escaped to use LaTeX math
|
||||||
mark-up. This is not the case anymore, and the above must be used
|
mark-up. This is not the case anymore, and the above must be used
|
||||||
(only in case of ``'pdflatex'`` engine) if the source contains such
|
(only in case of ``'pdflatex'`` engine) if the source contains such
|
||||||
|
@ -1841,7 +1841,17 @@ These options influence LaTeX output.
|
|||||||
``'xelatex'`` or ``'lualatex'`` and making sure to use an OpenType font
|
``'xelatex'`` or ``'lualatex'`` and making sure to use an OpenType font
|
||||||
with wide-enough glyph coverage is often easier than trying to make
|
with wide-enough glyph coverage is often easier than trying to make
|
||||||
``'pdflatex'`` work with the extra Unicode characters. Since Sphinx 2.0
|
``'pdflatex'`` work with the extra Unicode characters. Since Sphinx 2.0
|
||||||
the default is the GNU FreeFont which covers well Latin, Cyrillic and Greek.
|
the default is the GNU FreeFont which covers well Latin, Cyrillic and
|
||||||
|
Greek.
|
||||||
|
|
||||||
|
.. versionchanged:: 2.1.0
|
||||||
|
|
||||||
|
Use ``xelatex`` (and LaTeX package ``xeCJK``) by default for Chinese
|
||||||
|
documents.
|
||||||
|
|
||||||
|
.. versionchanged:: 2.2.1
|
||||||
|
|
||||||
|
Use ``xelatex`` by default for Greek documents.
|
||||||
|
|
||||||
Contrarily to :ref:`MathJaX math rendering in HTML output <math-support>`,
|
Contrarily to :ref:`MathJaX math rendering in HTML output <math-support>`,
|
||||||
LaTeX requires some extra configuration to support Unicode literals in
|
LaTeX requires some extra configuration to support Unicode literals in
|
||||||
|
2
setup.py
2
setup.py
@ -47,7 +47,7 @@ extras_require = {
|
|||||||
'html5lib',
|
'html5lib',
|
||||||
'flake8>=3.5.0',
|
'flake8>=3.5.0',
|
||||||
'flake8-import-order',
|
'flake8-import-order',
|
||||||
'mypy>=0.730',
|
'mypy>=0.740',
|
||||||
'docutils-stubs',
|
'docutils-stubs',
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
@ -418,6 +418,8 @@ def default_latex_engine(config: Config) -> str:
|
|||||||
return 'platex'
|
return 'platex'
|
||||||
elif (config.language or '').startswith('zh'):
|
elif (config.language or '').startswith('zh'):
|
||||||
return 'xelatex'
|
return 'xelatex'
|
||||||
|
elif config.language == 'el':
|
||||||
|
return 'xelatex'
|
||||||
else:
|
else:
|
||||||
return 'pdflatex'
|
return 'pdflatex'
|
||||||
|
|
||||||
|
@ -32,7 +32,8 @@ from sphinx.util.nodes import make_refnode
|
|||||||
|
|
||||||
if False:
|
if False:
|
||||||
# For type annotation
|
# For type annotation
|
||||||
from typing import Any, Callable, Dict, Iterator, List, Match, Pattern, Tuple, Union # NOQA
|
from docutils.nodes import TextElement
|
||||||
|
from typing import Any, Callable, Dict, Iterator, List, Match, Pattern, Tuple, Type, Union # NOQA
|
||||||
from sphinx.application import Sphinx # NOQA
|
from sphinx.application import Sphinx # NOQA
|
||||||
from sphinx.builders import Builder # NOQA
|
from sphinx.builders import Builder # NOQA
|
||||||
from sphinx.config import Config # NOQA
|
from sphinx.config import Config # NOQA
|
||||||
@ -7037,7 +7038,7 @@ class CPPExprRole:
|
|||||||
if asCode:
|
if asCode:
|
||||||
# render the expression as inline code
|
# render the expression as inline code
|
||||||
self.class_type = 'cpp-expr'
|
self.class_type = 'cpp-expr'
|
||||||
self.node_type = nodes.literal
|
self.node_type = nodes.literal # type: Type[TextElement]
|
||||||
else:
|
else:
|
||||||
# render the expression as inline text
|
# render the expression as inline text
|
||||||
self.class_type = 'cpp-texpr'
|
self.class_type = 'cpp-texpr'
|
||||||
|
@ -187,7 +187,7 @@ class sphinx_domains:
|
|||||||
def __enter__(self) -> None:
|
def __enter__(self) -> None:
|
||||||
self.enable()
|
self.enable()
|
||||||
|
|
||||||
def __exit__(self, exc_type: "Type[Exception]", exc_value: Exception, traceback: Any) -> bool: # NOQA
|
def __exit__(self, exc_type: "Type[Exception]", exc_value: Exception, traceback: Any) -> bool: # type: ignore # NOQA
|
||||||
self.disable()
|
self.disable()
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
from typing import Callable, Dict, List, Match, Pattern
|
from typing import Callable, Dict, Iterable, List, Match, Pattern
|
||||||
|
|
||||||
from sphinx.util.osutil import canon_path
|
from sphinx.util.osutil import canon_path
|
||||||
|
|
||||||
@ -96,7 +96,7 @@ def patmatch(name: str, pat: str) -> Match[str]:
|
|||||||
return _pat_cache[pat].match(name)
|
return _pat_cache[pat].match(name)
|
||||||
|
|
||||||
|
|
||||||
def patfilter(names: List[str], pat: str) -> List[str]:
|
def patfilter(names: Iterable[str], pat: str) -> List[str]:
|
||||||
"""Return the subset of the list NAMES that match PAT.
|
"""Return the subset of the list NAMES that match PAT.
|
||||||
|
|
||||||
Adapted from fnmatch module.
|
Adapted from fnmatch module.
|
||||||
|
@ -55,7 +55,7 @@ class UnicodeMixin:
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
warnings.warn('UnicodeMixin is deprecated',
|
warnings.warn('UnicodeMixin is deprecated',
|
||||||
RemovedInSphinx40Warning, stacklevel=2)
|
RemovedInSphinx40Warning, stacklevel=2)
|
||||||
return self.__unicode__()
|
return self.__unicode__() # type: ignore
|
||||||
|
|
||||||
|
|
||||||
def execfile_(filepath: str, _globals: Any, open: Callable = open) -> None:
|
def execfile_(filepath: str, _globals: Any, open: Callable = open) -> None:
|
||||||
|
@ -116,6 +116,10 @@ XELATEX_DEFAULT_FONTPKG = r'''
|
|||||||
BoldItalicFont = *BoldOblique,
|
BoldItalicFont = *BoldOblique,
|
||||||
]
|
]
|
||||||
'''
|
'''
|
||||||
|
XELATEX_GREEK_DEFAULT_FONTPKG = (XELATEX_DEFAULT_FONTPKG +
|
||||||
|
'\n\\newfontfamily\\greekfont{FreeSerif}' +
|
||||||
|
'\n\\newfontfamily\\greekfontsf{FreeSans}' +
|
||||||
|
'\n\\newfontfamily\\greekfonttt{FreeMono}')
|
||||||
LUALATEX_DEFAULT_FONTPKG = XELATEX_DEFAULT_FONTPKG
|
LUALATEX_DEFAULT_FONTPKG = XELATEX_DEFAULT_FONTPKG
|
||||||
|
|
||||||
DEFAULT_SETTINGS = {
|
DEFAULT_SETTINGS = {
|
||||||
@ -226,6 +230,9 @@ ADDITIONAL_SETTINGS = {
|
|||||||
('xelatex', 'zh'): {
|
('xelatex', 'zh'): {
|
||||||
'fontenc': '\\usepackage{xeCJK}',
|
'fontenc': '\\usepackage{xeCJK}',
|
||||||
},
|
},
|
||||||
|
('xelatex', 'el'): {
|
||||||
|
'fontpkg': XELATEX_GREEK_DEFAULT_FONTPKG,
|
||||||
|
},
|
||||||
} # type: Dict[Any, Dict[str, Any]]
|
} # type: Dict[Any, Dict[str, Any]]
|
||||||
|
|
||||||
EXTRA_RE = re.compile(r'^(.*\S)\s+\(([^()]*)\)\s*$')
|
EXTRA_RE = re.compile(r'^(.*\S)\s+\(([^()]*)\)\s*$')
|
||||||
|
@ -175,6 +175,17 @@ def test_latex_additional_settings_for_language_code(app, status, warning):
|
|||||||
assert r'\usepackage{xeCJK}' in result
|
assert r'\usepackage{xeCJK}' in result
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.sphinx('latex', testroot='basic', confoverrides={'language': 'el'})
|
||||||
|
def test_latex_additional_settings_for_greek(app, status, warning):
|
||||||
|
app.builder.build_all()
|
||||||
|
result = (app.outdir / 'test.tex').text(encoding='utf8')
|
||||||
|
print(result)
|
||||||
|
print(status.getvalue())
|
||||||
|
print(warning.getvalue())
|
||||||
|
assert '\\usepackage{polyglossia}\n\\setmainlanguage{greek}' in result
|
||||||
|
assert '\\newfontfamily\\greekfonttt{FreeMono}' in result
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.sphinx('latex', testroot='latex-title')
|
@pytest.mark.sphinx('latex', testroot='latex-title')
|
||||||
def test_latex_title_after_admonitions(app, status, warning):
|
def test_latex_title_after_admonitions(app, status, warning):
|
||||||
app.builder.build_all()
|
app.builder.build_all()
|
||||||
|
Loading…
Reference in New Issue
Block a user