2015-04-12 27 views
5

W python-sfinksie jest only directive, który może być użyty do warunkowego wpływania na dokument zgodnie z jego wyjściem. Na przykład tekst pojawia się tylko w html lub latex.W jaki sposób można używać tylko dyrektywy inline, używając roli w python-sphinx?

jest używać tak:

 
.. 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. 

Jak mogę użyć dyrektywy rolę we właściwy sposób korzystać z inline tylko klasy, powiedzmy tak:

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

widziałem coś podobnego do dyrektywy raw. Czy jest to również możliwe w przypadku jedynej dyrektywy? Próbowałem:

 

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

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

Ale to nie działa.

+2

Nie mylić dyrektyw i ról. Dyrektywy działają na blokach tekstu (całe akapity); role są dla tekstu śródtekstowego (w ramach akapitów). Nie ma wbudowanej roli, która odpowiada dyrektywie "tylko". W tym celu musisz utworzyć własną niestandardową rolę. Nie mogę podać żadnych szczegółowych instrukcji, ale oto artykuł, który może Ci pomóc: http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html. – mzjn

+0

OK, dziękuję. To ma sens. Pomyślałem, że [raw] (http://docutils.sourceforge.net/docs/ref/rst/directives.html#raw-data-pass-through) jest dyrektywą i do tego działa. Ale jak stwierdzono [tutaj] (http://docutils.sourceforge.net/docs/ref/rst/directives.html#custom-interpreted-text-roles), wydaje się, że jest to "szczególny przypadek". –

+0

Zmieniłem mój komentarz w prawidłową odpowiedź. – mzjn

Odpowiedz

1

Dyrektywy działają na blokach tekstu (całe akapity); role są dla tekstu śródtekstowego (w ramach akapitów).

Wspomniał Pan o raw, a tak naprawdę jest to zarówno directive, jak i role z tą nazwą dla "nieprzetworzonych danych".

Ale nie ma wbudowanej roli, która jest wbudowanym odpowiednikiem dyrektywy only. W tym celu musisz utworzyć własną niestandardową rolę. Nie mogę podać żadnych szczegółowych instrukcji, ale oto artykuł, który może Ci pomóc: http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html.