2012-02-25 2 views
13

Я использую Sphinx для написания заметок. Я использую расширение Mathjax для Math в примечаниях. Размер по умолчанию для математики немного больше, чем хотелось бы. На странице Mathjax я обнаружил, что могу изменить этот размер, добавив следующий скрипт в файл HTML.Добавление тега сценария javascript в какое-то место, чтобы он работал для каждого файла в документации sphinx.

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

Итак, я попробовал, добавив следующее в .rst файле:

.. raw:: html 

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

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

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

выше работает отлично подходит для математики в этом конкретном .rst файле. Но я хочу сделать это для многих разных .rst-файлов, которые являются частью одного и того же документа сфинкса. Можно ли сделать это, не добавляя вышеуказанный скрипт к каждому файлу .rst?

Спасибо, что прочитали это и были бы признательны, если вы сможете помочь.

ответ

15

Это можно сделать с помощью шаблона:

  1. Создайте папку с именем templates в директории проекта Sphinx.

  2. В conf.py, добавьте

    templates_path = ["templates"] 
    
  3. В каталоге templates, создайте файл с именем layout.html со следующим содержанием:

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

будет включен элемент <script> в <head> каждой сгенерированной HTML-страницы.

Блок extrahead по умолчанию пуст. Подробности см. На странице Sphinx templating documentation.

+0

Большое спасибо. Это здорово! Спасибо, особенно за подробные шаги. Почему существует '-' в строке' {% - block extrahead} '. Без тире это не сработает. Примеры кода, которые я видел в ссылке, не имеют этого '-'. – Curious2learn

+0

Блок 'extrahead' по умолчанию в sphinx/themes/basic/layout.html имеет дополнительный дефис/тире/минус (это [управление пробелами] (http://jinja.pocoo.org/docs/templates/#whitespace -контроль)). Но я не могу объяснить, почему он не работает для вас без него ... – mzjn

+0

Спасибо. Я посмотрю на это. Во всяком случае, он отлично работает с тире. Еще раз спасибо за ответ. – Curious2learn

3

Другой метод:

Используйте script_files настройки в вашем переопределен layout.html файле.

3

И третий подход, который не включает в себя шаблоны:

вызов add_javascript в функции setup в conf.py вашего проекта Сфинкса:

# 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") 

Создайте файл "MathJax-config.js" в ваш исходный каталог _static. (Проверьте настройку conf.py html_static_path, чтобы проверить статические каталоги, или определите, если необходимо.) Sphinx скопирует его в выходной каталог во время сборки.

Существует также метод add_stylesheet для файлов css. И оба они могут принимать либо относительные пути к вашим статическим источникам, либо полные URL-адреса для внешних ресурсов.

+0

Кажется, что это требует установки расширения, это правильно? – NirIzr

+1

Не требуется расширение: вы можете поместить функцию 'setup()' в собственный conf.py вашего проекта. (Вашему проекту действительно разрешено быть его собственным расширением.) – medmunds

 Смежные вопросы

  • Нет связанных вопросов^_^