Pregunta

Estoy tratando de utilizar scons para construir un documento de látex. En particular, quiero conseguir scons para invocar un programa en Python que genera un archivo que contiene una tabla que se \ input {} en el documento principal. He mirado a través de la documentación scons pero no es inmediatamente claro para mí lo que tengo que hacer.

Lo que quiero lograr es esencialmente lo que se obtendría con este makefile:

document.pdf:  table.tex
    pdflatex document.tex

table.tex:
    python table_generator.py

¿Cómo puedo expresar esto en scons?

¿Fue útil?

Solución

Algo a lo largo de estas líneas debe hacer -

env.Command ('document.tex', '', 'python table_generator.py')
env.PDF ('document.pdf', 'document.tex')

Se declara que 'document.tex' se genera mediante una llamada al script en Python, y solicita un documento PDF para ser creado a partir de este archivo generatd 'document.tex'.

Tenga en cuenta que esto es sólo en espíritu. Se puede requerir algunos ajustes. En particular, no estoy seguro de qué tipo de semántica que usted quiere para la generación de 'document.tex' - en caso de que se genera cada vez? Sólo cuando no existe? Cuando algunos otros cambios en los archivos? (Que se quiere añadir esta dependencia como segundo argumento al comando () ese caso).

Además, la salida de comando () se puede usar como entrada a PDF () si se desea. Para mayor claridad, no hice eso.

Otros consejos

En este caso simple, la forma más fácil es usar el módulo subproceso

from subprocess import call
call("python table_generator.py")
call("pdflatex document.tex")

Independientemente de donde en su archivo SConstruct se colocan estas líneas, van a suceder antes de cualquiera de la compilación y del enlace realizado por SCons.

La desventaja es que estos comandos se ejecutan cada vez que se ejecuta SCons, en lugar de sólo cuando los archivos han cambiado, que es lo que pasaría en su ejemplo Makefile. Así que si esos comandos toman mucho tiempo para correr, esto no sería una buena solución.

Si realmente necesita sólo para ejecutar estos comandos cuando los archivos han cambiado, mira a los SCons sección del manual escribir sus propias Constructores .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top