diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty index ee0a923d0..d617c62bc 100644 --- a/sphinx/texinputs/sphinx.sty +++ b/sphinx/texinputs/sphinx.sty @@ -522,3 +522,9 @@ \gdef\@chappos{} } \fi + +% Define literal-block environment +\RequirePackage{float} +\floatstyle{plaintop} +\newfloat{literal-block}{htbp}{loc}[chapter] +\floatname{literal-block}{List} diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index a7459c924..59a174c1f 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1347,9 +1347,8 @@ class LaTeXTranslator(nodes.NodeVisitor): linenos = node['linenos'] caption = node.get('caption') if caption: - self.body.append('\n{\\colorbox[rgb]{0.9,0.9,0.9}' - '{\\makebox[\\textwidth][l]' - '{\\small\\texttt{%s}}}}\n' % (caption,)) + self.body.append('\n\\begin{literal-block}\caption{%s}\n' % + (caption,)) def warner(msg): self.builder.warn(msg, (self.curfilestack[-1], node.line)) hlcode = self.highlighter.highlight_block(code, lang, warn=warner, @@ -1367,6 +1366,8 @@ class LaTeXTranslator(nodes.NodeVisitor): hlcode = hlcode.rstrip() + '\n' self.body.append('\n' + hlcode + '\\end{%sVerbatim}\n' % (self.table and 'Original' or '')) + if caption: + self.body.append('\n\\end{literal-block}\n') raise nodes.SkipNode def depart_literal_block(self, node): self.body.append('\n\\end{alltt}\n') diff --git a/tests/test_directive_code.py b/tests/test_directive_code.py index 4dbdff881..f2f64970b 100644 --- a/tests/test_directive_code.py +++ b/tests/test_directive_code.py @@ -93,8 +93,7 @@ def test_code_block_caption_html(app): def test_code_block_caption_latex(app): app.builder.build('index') latex = (app.outdir / 'Python.tex').text() - caption = ('{\\colorbox[rgb]{0.9,0.9,0.9}{\\makebox[\\textwidth][l]' - '{\\small\\texttt{caption-test.rb}}}}') + caption = '\\caption{caption-test.rb}' assert caption in latex @@ -168,6 +167,5 @@ def test_literalinclude_caption_html(app): def test_literalinclude_caption_latex(app): app.builder.build('index') latex = (app.outdir / 'Python.tex').text() - caption = ('{\\colorbox[rgb]{0.9,0.9,0.9}{\\makebox[\\textwidth][l]' - '{\\small\\texttt{caption-test.py}}}}') + caption = '\\caption{caption-test.py}' assert caption in latex