2012-02-25 8 views
13

Estoy usando Sphinx para escribir algunas notas. Estoy usando la extensión Mathjax para matemáticas en las notas. El tamaño predeterminado de las matemáticas es un poco más grande de lo que me gustaría. En la página de Mathjax descubrí que puedo cambiar ese tamaño agregando la siguiente secuencia de comandos al archivo HTML.Agregar una etiqueta de script de JavaScript en algún lugar para que funcione para cada archivo en la documentación de esfinge

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

tanto, he intentado añadiendo lo siguiente en un archivo .rst:

.. raw:: html 

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

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

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

Lo anterior funciona muy bien para las matemáticas en ese archivo específico .rst. Pero quiero hacer esto para muchos archivos .rst diferentes que son todos parte del mismo documento de esfinge. ¿Es posible hacer esto sin agregar el script anterior a cada archivo .rst?

Gracias por leer esto y le agradecería si puede ayudar.

Respuesta

15

Esto se puede hacer con una plantilla:

  1. Crear una carpeta llamada templates en el directorio del proyecto Esfinge.

  2. En conf.py, añadir

    templates_path = ["templates"] 
    
  3. En el directorio templates, crear un archivo llamado layout.html con el siguiente contenido:

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

se incluirá el elemento <script> en el <head> de cada página HTML generada. El bloque de plantilla extrahead está vacío de forma predeterminada Vea el Sphinx templating documentation para más detalles.

+0

Muchas gracias. Esto funcionó muy bien! Gracias especialmente por los pasos detallados. ¿Por qué hay un '-' en la línea' {% - bloque extrahead} '. Sin el tablero, no funciona. Los ejemplos de código que he visto en el enlace no tienen este '-'. – Curious2learn

+0

El bloque 'extrahead' predeterminado en sphinx/themes/basic/layout.html tiene el guión/guión/menos adicional (se trata de [control de espacio en blanco] (http://jinja.pocoo.org/docs/templates/#whitespace) -controlar)). Pero realmente no puedo explicar por qué no funciona para ti sin él ... – mzjn

+0

Gracias. Voy a investigar eso. De todos modos, funciona muy bien con el tablero. Gracias de nuevo por responder. – Curious2learn

3

Otro método:

Utilice el ajuste script_files en su archivo se reemplaza layout.html.

3

Y un tercer enfoque, que no implica plantillas:

llamada add_javascript en la función setup en conf.py de su proyecto Sphinx:

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

crear el archivo "mathjax-config.js" en su directorio de origen estático. (Compruebe la configuración conf.py html_static_path para verificar los directorios estáticos, o defina uno si es necesario). Sphinx lo copiará en el directorio de salida durante la compilación.

También hay un método add_stylesheet para archivos css. Y ambos pueden tomar rutas relativas a sus directorios fuente estáticos, o direcciones URL completas a recursos externos.

+0

Parece que esto requiere configurar una extensión, ¿es correcto? – NirIzr

+1

No se requiere extensión: puede colocar una función 'setup()' en el conf.py propio de su proyecto (Su proyecto se permite de manera efectiva como su propia extensión). – medmunds

Cuestiones relacionadas