2015-04-12 32 views
5

In python-sfinge c'è lo only directive, che può essere usato per influenzare condizionalmente il documento in base alla sua uscita. Ad esempio il testo appare solo in html o latex.Come posso usare l'unica direttiva in linea usando il ruolo in python-sphinx?

Si usa in questo modo:

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

Come posso utilizzare la direttiva ruolo nel modo giusto di usare la linea unica di classe, diciamo così:

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

ho visto qualcosa di simile per la direttiva raw. Questo è anche possibile per l'unica direttiva? Ho provato:

 

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

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

Ma questo non funziona.

+2

Non confondere direttive e ruoli. Le direttive funzionano su blocchi di testo (interi paragrafi); i ruoli sono per il testo in linea (all'interno di paragrafi). Non esiste un ruolo predefinito che corrisponda alla direttiva "only". Dovrai creare il tuo ruolo personalizzato per questo scopo. Non posso fornire istruzioni dettagliate, ma ecco un articolo che può aiutarti a iniziare: http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html. – mzjn

+0

OK, grazie. Questo ha senso. Mi sono confuso da quando ho pensato [raw] (http://docutils.sourceforge.net/docs/ref/rst/directives.html#raw-data-pass-through) è una direttiva e per questo funziona. Ma come affermato [qui] (http://docutils.sourceforge.net/docs/ref/rst/directives.html#custom-interpreted-text-roles), questo sembra essere "un caso speciale". –

+0

Ho trasformato il mio commento in una risposta adeguata. – mzjn

risposta

1

Le direttive funzionano su blocchi di testo (interi paragrafi); i ruoli sono per il testo in linea (all'interno di paragrafi).

Lei ha menzionato raw e c'è effettivamente sia unsia un role con quel nome, per "pass-through di dati grezzi".

Ma non esiste un ruolo predefinito equivalente in linea della direttiva only. Dovrai creare il tuo ruolo personalizzato per questo scopo. Non posso fornire istruzioni dettagliate, ma ecco un articolo che può aiutarti ad iniziare: http://doughellmann.com/2010/05/09/defining-custom-roles-in-sphinx.html.