20
votes

I am using Sphinx to generate HTML documentation for a Python program.

I would like to use the generic admonition directive (cf. http://docutils.sourceforge.net/docs/ref/rst/directives.html#generic-admonition) with a specific title and have it marked up in a way I can define, for example like content generated with the note directive, i.e., boxed, but with a different color (most admonitions are not specially styled, cf. http://sphinx.pocoo.org/rest.html?highlight=admonition).

How do I best go about this?

3
I'm not sure I understand. Do you want the admonition directive to be rendered exactly like the note directive? Why? What do you mean by "specific sphinx admonitions"?mzjn
@mzjn: I edited the question to clarify it.equaeghe
How about using the topic directive?crayzeewulf
@crayzeewulf: no, I semantically want it to be admonition; Bud's answer is perfectly fine.equaeghe
Okie dokie. I wanted something similar that worked for both PDF and HTML outputs. And topic did the job for me.crayzeewulf

3 Answers

21
votes

If I understood your question correctly, you'd like to apply a custon CSS style to the admonition. You can do this with a :class: attibute.

For example, the following

.. admonition:: my title goes here
   :class: myOwnStyle

   this is the admonition text

renders as

<div class="myownstyle admonition">
  <p class="first admonition-title">my title goes here</p>
  <p class="last">this is the admonition text</p>
</div>

You then add your own style sheet. For example, by a custom layout.html in the _templates directory in your source directory:

{% extends "!layout.html" %}
{% set css_files = css_files + ["_static/customstyle.css"] %}

Then you can play around with CSS styles in your style sheet using a selector for the myownstyle class

6
votes

To add css files more easily, put them in the _static folder and then add this to conf.py:

def setup(app):
    app.add_stylesheet('custom.css')
3
votes

Here is an example custom.css for overwriting the color of the title and background color of the myownstyle admonition. I used the app.add_stylesheet() call in conf.py.

.rst-content .myownstyle .admonition-title {
   background: #b99976
}

.rst-content .myownstyle {
   background: #e5d3b3
}