2 votos

Crear un servicio con Automator para compilar el archivo .tex en Mac

Estoy usando Mac OS X 10.9.3, TeXLive-2013 y Scrivener para escribir mis trabajos.

Me gustaría utilizar Automator de Apple para crear un servicio (disponible desde el menú del Finder con el botón derecho del ratón sobre un archivo) llamado "Compilar archivo TeX" que ejecute un simple comando utilizando el archivo seleccionado como entrada .

Ejemplo:

  1. Dentro de una carpeta (/Volumes/Data/TeX_docs/) tengo un ejemplo.tex creado por Scrivener que está listo para ser compilado con LaTeX.
  2. Me gustaría hacer clic con el botón derecho del ratón en este archivo y, desde el menú Servicio del Finder, elegir la opción "Compilar archivo TeX"
  3. Una vez elegido, este servicio ejecutará el comando latexmk -pdf -bibtex exemple.tex ¡y así compilar el archivo .tex dentro de la misma carpeta, creando un archivo .pdf (Este comando de la Terminal está funcionando perfectamente en este momento, por lo que la necesidad de automatizar esta acción!)
  4. Después de compilar el archivo .tex, aparece un cuadro de diálogo que me pregunta si quiero borrar todos los archivos temporales con un Yes o No opción. Si Yes se elige, borra todos los archivos temporales de TeX (.aux,.bbl,.bcf,.fdb_latexmk,.fls,.log,.out,.run.xml) y mantiene sólo el archivo original exemple.tex y el nuevo exemple.pdf. ¡Si no, no hace nada más y al final tengo todos los archivos!

1voto

LuCouto Puntos 16

No es la solución óptima, pero por ahora funciona. Aquí está la ventana de Automator:

Automator actions

El primer shell script compila el .tex utilizando la secuencia pdflatex - biber - pdflatex y contiene el siguiente código:

for f in "$@"
do 
    file_ext=${f##*.}
    if [ "$file_ext" = "tex" ]
    then
        foldername=$(dirname "$f")
        export foldername
        filename=$(basename "$f")
        filesimple=${filename%.tex*}
        cd $foldername
        /usr/local/texlive/2013/bin/x86_64-darwin/pdflatex "$filename"
        /usr/local/texlive/2013/bin/x86_64-darwin/biber "$filesimple"
        /usr/local/texlive/2013/bin/x86_64-darwin/pdflatex "$filename"
    else
        echo $f n\'est pas un fichier TeX
    fi
done

El segundo shell script borra todos los temp y abre el .pdf archivo. Contiene el siguiente código:

for f in "$@"
do 
    file_ext=${f##*.}
    if [ "$file_ext" = "tex" ]
    then
        foldername=$(dirname "$f")
        filename=$(basename "$f")
        filesimple=${filename%.tex*}
        cd $foldername
        rm $filesimple.aux
        rm $filesimple.bbl
        rm $filesimple.bcf
        rm $filesimple.blg
        rm $filesimple.log
        rm $filesimple.run.xml
        open $filesimple.pdf
    else
        echo $f n\'est pas un fichier TeX
    fi
done

Todavía estoy esperando una solución mejor utilizando el latexmk ¡comando!

0voto

siva Puntos 23

Esto toma el archivo como entrada y ejecuta su comando latexmk, luego pide confirmación antes de borrar todos los archivos con extensiones coincidentes.

for f in "$@"
do
  /path/to/latexmk -pdf -bibtex "$f"
done

find ${@%/*} -name "*.aux" -o -name "*.bbl" -o -name "*.bcf" -o -name "*.fdb_latexmk" -o -name "*.fls" -o -name "*.log" -o -name "*.out" -o -name "*.run.xml" -delete

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X