How can I get rst2html.py to include the CSS for s

2019-02-17 08:59发布

问题:

When I run rst2html.py against my ReStructured Text source, with its code-block directive, it adds all the spans and classes to the bits of code in the HTML, but the CSS to actually colorize those spans is absent. Is it possible to get RST to add a CSS link or embed the CSS in the HTML file?

回答1:

As of Docutils 0.9 you could use the code directive. From the example on this page:

.. code:: python

 def my_function():
     "just a test"
     print 8/2

Alternatively, you can use Pygments for syntax highlighting. See Using Pygments in ReST documents and this SO answer.

Finally, you could also use the code in this or this blogpost.

Update As discussed in the comments, to get the style file used by Pygments use the command

pygmentize -S default -f html -a .highlight > style.css

which will generate the Pygments CSS style file style.css.



回答2:

In docutils 0.9 and 0.10 it doesn't mattter whether you use code, code-block or sourcecode. All directives are considered code role.

This command will generate css that can embedded into html by rst2html.py.

pygmentize -S default -f html -a .code > syntax.css

This command will generate the html:

rst2html.py --stylesheet=syntax.css in.txt > out.html

By default, rst2html.py outputs spans with class names like comment, number, integer, and operator. If you have a docutils.conf either in the same directory as the source, or /etc, or in ~/.docutils with

[parsers]
[restructuredtext parser]
syntax_highlight=short

... then the class names will be c, m, mi, and o which matches syntax.css generated by pygmentize.

See syntax-highlight in docutils documentation