2012-02-25 3 views
13

Używam Sphinx do pisania notatek. Używam rozszerzenia Mathjax dla Math w notatkach. Domyślny rozmiar matematyki jest trochę większy niż chciałbym. Na stronie Mathjax znalazłem, że mogę zmienić ten rozmiar, dodając następujący skrypt do pliku HTML.Dodanie skryptu javascript oznacz miejsce w taki sposób, aby działało dla każdego pliku w dokumentacji sfinksa.

MathJax.Hub.Config({ 
    "HTML-CSS": {scale: 90} 
}); 

Tak, próbowałem przez dodanie następujących w pliku .rst:

.. raw:: html 

    <script type="text/javascript" > 
     MathJax.Hub.Config({ 
      "HTML-CSS": { 
       scale: 90 
      } 
     }); 
    </script> 

========== 
Objective 
========== 

To change math size \\(\\alpha \\). 

Powyższy działa świetnie na matematyce w tym konkretnym .rst pliku. Ale chcę to zrobić dla wielu różnych plików .rst, które są częścią tego samego dokumentu sfinksa. Czy można to zrobić bez dodawania powyższego skryptu do każdego pliku .rst?

Dziękuję za przeczytanie tego i byłbym wdzięczny, jeśli możesz pomóc.

Odpowiedz

15

Można to zrobić za pomocą szablonu:

  1. Utwórz folder o nazwie templates w katalogu projektu Sphinx.

  2. W conf.py, dodać

    templates_path = ["templates"] 
    
  3. W katalogu templates, utwórz plik o nazwie layout.html o następującej treści:

    {% extends "!layout.html" %} 
    
    {%- block extrahead %} 
    <script type="text/javascript"> 
         MathJax.Hub.Config({ 
          "HTML-CSS": { 
           scale: 90 
          } 
         }); 
        </script>  
    {% endblock %} 
    

Element <script> zostaną uwzględnione w <head> każdej wygenerowanej strony HTML.

Blok szablonu extrahead jest pusty domyślnie. Szczegółowe informacje można znaleźć w Sphinx templating documentation.

+0

Dziękuję bardzo. To działało świetnie! Dziękuję szczególnie za szczegółowe kroki. Dlaczego w linii '{% - block extrahead} znajduje się' -' '. Bez kreski nie działa. Przykłady kodu, które widziałem w łączu, nie mają tego '-'. – Curious2learn

+0

Domyślny blok 'extrahead' w sfinksie/themes/basic/layout.html ma dodatkowy łącznik/myślnik/minus (chodzi o [białą kontrolę] (http://jinja.pocoo.org/docs/templates/#whitespace -kontrola)). Ale nie mogę naprawdę wyjaśnić, dlaczego to nie działa bez ciebie ... – mzjn

+0

Dzięki. Zajrzę do tego. W każdym razie działa dobrze z kreską. Jeszcze raz dziękuję za odpowiedź. – Curious2learn

3

Inna metoda:

użyć ustawienia w swojej zamienione na layout.html pliku script_files.

3

I Trzecie podejście, które nie wiążą się szablony:

połączenia add_javascript w funkcji setup w conf.py Twojego projektu Sfinksa:

# conf.py 

# ... other settings ... 

def setup(app): 
    # (create a setup() function if you don't already have one; 
    # or add to the existing setup() ...) 
    app.add_javascript("mathjax-config.js") 

utworzyć plik "mathjax-config.js" w twój _statyczny katalog źródłowy. (Sprawdź ustawienie conf.py html_static_path, aby zweryfikować statyczne katalogi lub zdefiniuj je w razie potrzeby). Sphinx skopiuje go do katalogu wyjściowego podczas kompilacji.

Istnieje również metoda add_stylesheet dla plików css. Obie mogą pobierać względne ścieżki do katalogów statycznych lub pełnych adresów URL do zasobów zewnętrznych.

+0

Wygląda na to, że wymaga to ustawienia rozszerzenia, czy to prawda? – NirIzr

+1

Nie wymaga rozszerzenia: możesz umieścić funkcję 'setup()' w swoim conf.py swojego projektu. (Twój projekt może być samodzielnym rozszerzeniem). – medmunds