Cree un servicio usando Automator para compilar el archivo .tex en Mac

2

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

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

Ejemplo:

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

2 respuestas

1

Esta no es la solución óptima, pero está funcionando por ahora. Aquí está la ventana de Automator:

Elprimerscriptdeshellcompilaelarchivo.texusandolasecuenciapdflatex-biber-pdflatexycontieneelsiguientecódigo:

forfin"$@"
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 script de shell elimina todos los archivos temp y abre el archivo .pdf . 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 con el comando latexmk !

    
respondido por el LuCouto 24.05.2014 - 17:03
0

Esto toma el archivo como entrada y ejecuta su comando latexmk, luego solicita confirmación antes de eliminar 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
    
respondido por el grg 24.05.2014 - 11:28

Lea otras preguntas en las etiquetas