Saltar al contenido

¿Cómo ejecutar un script de shell desde LaTeX?

Solución:

Haría algo como lo siguiente (parcialmente motivado por lo que sugirió Roman): haga que su archivo LaTeX sea

documentclass{article}
begin{document}
input{scriptoutput.tex}
end{document}

y genera el archivo scriptoutput.tex utilizando

/usr/local/bin/my-shell-script.sh > scriptoutput.tex

Puede codificar esto en un archivo MAKE si desea que se ejecute automáticamente cuando sea necesario. Alternativamente, puede usar el TeX write18 mando,

documentclass{article}
immediatewrite18{/usr/local/bin/my-shell-script.sh > scriptoutput.tex}
begin{document}
input{scriptoutput.tex}
end{document}

y creo que ejecutará automáticamente el script de shell cada vez que compile el documento. los immediate Es necesario asegurarse de que el script se ejecute cuando LaTeX encuentre el comando, en lugar de esperar hasta que se escriba una página de salida. (Consulte esta pregunta para obtener más información sobre la rutina de envío).

Como señaló David, puede usar write18 para llamar a programas externos, luego input el archivo de salida resultante. Sin embargo, probablemente querrá usar immediatewrite18 para asegurarse de que el script se ejecute antes de llamar al input.

Alternativamente, si usa versiones más recientes de pdf (la) tex (después de 1.40, creo), puede canalizar la salida directamente al documento, utilizando un comando de entrada canalizada:

documentclass{article}
begin{document}
input{|"/usr/local/bin/my-shell-script.sh"}
end{document}

Para cualquiera de los métodos, deberá habilitar las llamadas a programas externos. Para las distribuciones de TeXlive, debe llamar a latex con el -shell-escape opción, o para MikTeX, creo que la opción es -enable-write18.

Puede hacer esto en TeX. Este documento (PDF) le muestra cómo escribir y ejecutar un virus dentro de TeX. Los mismos principios se aplican para ejecutar un script de shell. Sin embargo, en mi opinión, es más práctico escribir un Makefile, que se ejecuta antes de que se ejecute LaTeX e inserta el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *