2012-08-07 3 views
5

Ich benutze Sphinx, um ein Python-Projekt zu dokumentieren. Ich verwende die Zeichenfläche, um einige Ergebnisse in der Dokumentation zu visualisieren. Meine Dokumentation muss Firefox und IE unterstützen. Ich muss die Bibliothek excanvas.js in die Dokumentation aufnehmen, aber nur, wenn der Browser IE ist. Wie kann ich diese Bibliothek bedingt einbeziehen, damit die relativen Pfade korrekt sind?Wie ändert man die <head> in Sphinx-Dokumentation, so dass die relativen Links aktualisiert werden?

Beispiel ....

Dokumentation Ordner

/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 Anhang bei Sphinx' documentation pages wurde die Datei layout.html geändert. Diese Änderung bestand darin, einen bedingten HTML-Block in den Vorlagenkopf einzufügen, der excanvas.js hinzufügt, wenn die Seite im IE angezeigt wird.

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

Die Datei working_test_page.rst und non_working_test_page.rst haben den gleichen Inhalt. Der Inhalt folgt. Der einzige Unterschied ist der Speicherort der Dateien.

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

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

Die Datei test_block.html und test_block_copy.html haben den gleichen Inhalt. Die zwei Dateien enthalten ein wenig HTML, das eine Zeichenfläche einrichtet und verwendet.

Wenn Sphinx kompiliert die ersten Dateien in das HTML-Build-Verzeichnis die folgenden Dateien Struktur Ergebnisse:

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

Die Datei working_test_page.html hat den richtigen Pfad zu excanvas.js und korrekt geladen. Die Datei non_working_test_page.html hat den falschen Pfad zu excanvas.js und lädt nicht korrekt.

Wie kann excanvas.js bedingt geladen werden, so dass die relativen Pfade in der Sphinx-Dokumentation unabhängig vom Speicherort der ersten Dateien korrekt sind?

Antwort

4

Der bedingte Link wird ordnungsgemäß formatiert, wenn die Hilfsfunktion pathto (...) zum Ändern des bedingten HTML-Snipet verwendet wird. Siehe Dokumentation unter pathto(file,1).

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