diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 40e4a4fe2..5b26619b9 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -219,13 +219,10 @@ class ExtBabel(Babel): def get_shorthandoff(self): # type: () -> unicode - shorthand = self.shorthands.get(self.language) - if shorthand: - return r'\ifnum\catcode`\%s=\active\shorthandoff{%s}\fi' % (shorthand, shorthand) - elif self.language == 'turkish': - # memo: if ever Sphinx starts supporting 'Latin', do as for Turkish - return r'\ifnum\catcode`\=\string=\active\shorthandoff{=}\fi' - return '' + return ('\\ifdefined\\shorthandoff\n' + ' \\ifnum\\catcode`\\=\\string=\\active\\shorthandoff{=}\\fi\n' + ' \\ifnum\\catcode`\\"=\\active\\shorthandoff{"}\\fi\n' + '\\fi') def uses_cyrillic(self): # type: () -> bool @@ -595,6 +592,7 @@ class LaTeXTranslator(nodes.NodeVisitor): self.elements['classoptions'] = ',dvipdfmx' # disable babel which has not publishing quality in Japanese self.elements['babel'] = '' + self.elements['shorthandoff'] = '' self.elements['multilingual'] = '' # disable fncychap in Japanese documents self.elements['fncychap'] = '' diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index 546ba139b..804a6b912 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -467,7 +467,7 @@ def test_babel_with_language_ru(app, status, warning): assert '\\addto\\captionsrussian{\\renewcommand{\\tablename}{Table.}}\n' in result assert (u'\\addto\\extrasrussian{\\def\\pageautorefname' u'{\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430}}\n' in result) - assert '\\shorthandoff' not in result + assert '\\shorthandoff' in result @pytest.mark.sphinx( @@ -529,7 +529,7 @@ def test_babel_with_unknown_language(app, status, warning): assert '\\addto\\captionsenglish{\\renewcommand{\\figurename}{Fig.}}\n' in result assert '\\addto\\captionsenglish{\\renewcommand{\\tablename}{Table.}}\n' in result assert '\\addto\\extrasenglish{\\def\\pageautorefname{page}}\n' in result - assert '\\shorthandoff' not in result + assert '\\shorthandoff' in result assert "WARNING: no Babel option known for language 'unknown'" in warning.getvalue()