2012-08-07 13 views
5

Sto usando Sphinx per documentare un progetto python. Sto usando la tela per visualizzare alcuni risultati nella documentazione. La mia documentazione deve supportare Firefox e IE. Devo includere la libreria excanvas.js nella documentazione, ma solo se il brower è IE. Come posso includere condizionatamente questa libreria in modo che i percorsi relativi siano corretti?Come modificare <head> nella documentazione di Sphinx in modo che i collegamenti relativi siano aggiornati?

esempio ....

cartelle di documentazione

/sphinx 
    /source 
    working_test_page.rst 
    test_block.html 
    /nested 
     non_working_test_page.rst 
     test_block_copy.html 
    /_templates 
     layout.html 
    /_static 
     excanvas.js 
    ... 

Per le note alla Sphinx' documentation pages, il file layout.html è stato modificato. Questa modifica consisteva nell'inserire un blocco condizionale di HTML nel template head che aggiunge excanvas.js se la pagina viene visualizzata su IE.

{% extends "!layout.html" %} 
{% block extrahead %} 
    <!--[if IE]> 
    <script type="text/javascript" src="_static/excanvas.js"></script> 
    <![endif]--> 
{% endblock %} 

Il working_test_page.rst di file e non_working_test_page.rst avere gli stessi contenuti. I contenuti seguono. L'unica differenza è la posizione dei file.

Script Test 
========== 

.. raw:: html 
    :file: test_block_1.html 

Il test_block.html di file e test_block_copy.html hanno lo stesso contenuto. I due file contengono un codice HTML che imposta una tela e la usa.

Quando sfinge compila i file prime nella cartella di compilazione HTML, i seguenti file risultati di struttura:

/sphinx 
    /build 
    working_test_page.html 
    /nested 
     non_working_test_page.html 
    /_static 
     excanvas.js 
    ... 

Il file working_test_page.html ha il percorso corretto per excanvas.js e carichi correttamente. Il file non_working_test_page.html ha il percorso sbagliato per excanvas.js e non viene caricato correttamente.

Come è possibile caricare excanvas.js in modo condizionale in modo che i percorsi relativi nella documentazione della sfinge siano corretti indipendentemente dalla posizione dei primi file?

risposta

4

Il collegamento condizionale verrà formattato correttamente se la funzione helper pathto (...) viene utilizzata per modificare lo snipet HTML condizionale. Vedi documentazione su pathto(file,1).

{% extends "!layout.html" %} 
{% block extrahead %} 
    <!--[if IE]> 
     <script type="text/javascript" src="{{pathto("_static/excanvas.js", 1)}}"></script> 
    <![endif]--> 
{% endblock %} 
Problemi correlati