Crea un servizio utilizzando Automator per compilare il file .tex in Mac

2

Uso Mac OS X 10.9.3, TeXLive-2013 e Scrivener per scrivere i miei documenti.

Mi piacerebbe utilizzare l'Automator di Apple per creare un servizio (disponibile dal menu del tasto destro del Finder su un file) chiamato "Compile TeX file" che esegue un semplice comando usando il file selezionato come ingresso .

Esempio:

  1. All'interno di una cartella (/ Volumi / Dati / TeX_docs /) Ho un file exemple.tex creato da Scrivener che è pronto per la compilazione con LaTeX.
  2. Vorrei fare clic con il tasto destro su questo file e dal menu Servizio del Finder scegliere l'opzione "Compila file TeX"
  3. Una volta scelto, questo servizio eseguirà il comando latexmk -pdf -bibtex exemple.tex e quindi compila il file .tex all'interno della stessa cartella, creando un file .pdf (questo comando Terminale funziona perfettamente ora, quindi la necessità di automatizzare questa azione! )
  4. Dopo aver compilato il file .tex, viene visualizzata una finestra di dialogo che chiede se voglio eliminare tutti i file temporanei con un'opzione Yes o No . Se viene selezionato Yes , cancella tutti i file temporanei TeX (.aux, .bbl, .bcf, .fdb_latexmk, .fls, .log, .out, .run.xml) e conserva solo l'esempio.extex originale e nuovo file exemple.pdf. Altrimenti, non fa altro e ho tutti i file alla fine!
posta LuCouto 24.05.2014 - 11:01
fonte

2 risposte

1

Questa non è la soluzione ottimale, ma funziona per ora. Ecco la finestra di Automator:

Ilprimoscriptdellashellcompilailfile.texutilizzandolasequenzapdflatex-biber-pdflatexecontieneilseguentecodice:

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

Il secondo script della shell cancella tutti i file temp e apre il file .pdf . Contiene il seguente codice:

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

Sto ancora aspettando una soluzione migliore usando il comando latexmk !

    
risposta data 24.05.2014 - 17:03
fonte
0

Questo prende il file come input e avvia il comando latexmk, quindi chiede conferma prima di eliminare tutti i file con estensioni corrispondenti.

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
    
risposta data 24.05.2014 - 11:28
fonte

Leggi altre domande sui tag