2015-04-12 12 views
5

In Python-Sphinx gibt es die only directive, die verwendet werden kann, um das Dokument entsprechend seiner Ausgabe bedingt zu beeinflussen. Zum Beispiel erscheint Text nur in HTML oder Latex.Wie kann ich die einzige Direktive inline verwenden, indem ich Rolle in python-sphinx verwende?

Es ist wie folgt zu verwenden:

 
.. only:: not latex 

    Here there is some Text, that does not appear in latex output. 

.. only:: html 

    Here there is some Text, that only appears in html output. 

Wie kann ich die Rolle Richtlinie in der richtigen Weise verwenden die einzige Klasse Inline zu verwenden, lassen Sie uns wie folgt sagen:

 
Here there is some Text, that :only-notlatex:`does not appear in latex`
:only-html:`only appears in html`.

ich sah, etwas ähnliches für die rohe Richtlinie. Ist dies auch für die einzige Richtlinie möglich? Ich habe versucht:

 

.. role:: only-html(only) 
    :format: html 

.. role:: only-notlatex(only) 
    :format: not latex 

Aber das funktioniert nicht.

+2

Verwechseln Sie nicht die Anweisungen und Rollen. Richtlinien arbeiten an Textblöcken (ganze Absätze); Rollen sind für Inline-Text (in Absätzen). Es gibt keine eingebaute Rolle, die der "einzigen" Direktive entspricht. Zu diesem Zweck müssen Sie eine eigene benutzerdefinierte Rolle erstellen. Ich kann keine detaillierten Anweisungen geben, aber hier ist ein Artikel, der Ihnen den Einstieg erleichtern kann: http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html. – mzjn

+0

OK, danke. Das macht Sinn. Ich war verwirrt, da ich dachte [rohe] (http://docutils.sourceforge.net/docs/ref/rst/directives.html#raw-data-pass-through) ist eine Direktive und dafür funktioniert es. Aber wie gesagt [hier] (http://docutils.sourceforge.net/docs/ref/rst/directives.html#custom-interpreted-text-roles) scheint dies ein "spezieller Fall" zu sein. –

+0

Ich machte meinen Kommentar zu einer richtigen Antwort. – mzjn

Antwort

1

Direktiven arbeiten an Textblöcken (ganze Absätze); Rollen sind für Inline-Text (in Absätzen).

Sie erwähnten raw, und es gibt in der Tat sowohl eine directive und eine role mit diesem Namen, für "Rohdaten-Pass-Through".

Aber es gibt keine eingebaute Rolle, die das Inline-Äquivalent der only Direktive ist. Zu diesem Zweck müssen Sie eine eigene benutzerdefinierte Rolle erstellen. Ich kann keine detaillierten Anweisungen geben, aber hier ist ein Artikel, der Ihnen den Einstieg erleichtern kann: http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html.

Verwandte Themen