2012-08-07 14 views
5

Estoy usando Sphinx para documentar un proyecto de Python. Estoy usando el lienzo para visualizar algunos resultados en la documentación. Mi documentación necesita ser compatible con Firefox e IE. Necesito incluir la biblioteca excanvas.js en la documentación, pero solo si el navegador es IE. ¿Cómo puedo incluir esta biblioteca de forma condicional para que las rutas relativas sean correctas?¿Cómo modificar el <head> en la documentación de Sphinx para que se actualicen los enlaces relativos?

Ejemplo ....

carpetas de documentación

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

por las notas en Sphinx' documentation pages, se modificó el layout.html archivo. Esta modificación consistía en insertar un bloque condicional de HTML en el encabezado de la plantilla, que agrega excanvas.js si la página se visualiza en IE.

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

El working_test_page.rst archivo y non_working_test_page.rst tienen el mismo contenido. Los contenidos siguen. La única diferencia es la ubicación de los archivos.

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

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

El archivo test_block.html y test_block_copy.html tienen los mismos contenidos. Los dos archivos contienen un poco de HTML que configura un lienzo y lo usa.

Cuando esfinge compila los archivos primeras en el directorio de construcción HTML, los archivos siguientes resultados: estructura

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

El working_test_page.html archivo tiene el camino correcto para excanvas.js y cargas correctamente. El archivo non_working_test_page.html tiene una ruta incorrecta a excanvas.js y no se carga correctamente.

¿Cómo se puede cargar excanvas.js condicionalmente para que las rutas relativas en la documentación de sphinx sean correctas independientemente de la ubicación de los primeros archivos?

Respuesta

4

El enlace condicional se formateará correctamente si la función auxiliar pathto (...) se utiliza para modificar el snipet HTML condicional. Consulte la documentación en pathto(file,1).

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