Chiamando il comando terminale (pdfcrop) direttamente da python o all'interno di applescript (esegui script di shell)

0

su OSX, sto usando il applescript per ottenere una stringa in lattice da un'applicazione (OmniOutliner), elaborarla tramite uno script python che chiama pdflatex e pdfcrop , e incollare di nuovo il pdf ritagliato finale in OmniOutliner. Vedi i dettagli su github .

Da quando ho aggiornato a OS 10.11 El Capitan e TexLive-2016 mi sono imbattuto in uno strano problema:

  • applescript chiama lo script python che chiama pdflatex , che funziona tutto ancora bene, dopo che ha cambiato i percorsi punta a pdflatex .
  • ora, quando eseguo pdfcrop da

    • all'interno dello script python all'interno del applescript

      set com to {"source ~/.bash_profile; cd " & presentDirStr & "; python create_latex_pdf.py " & strNoteQ}
      do shell script com
      
    • o direttamente da applecript: '

      set com_pdfcrop to {"source ~/.bash_profile; cd " & presentDirStr & ";/usr/local/texlive/2016/texmf-dist/scripts/pdfcrop temp.pdf"}
      do shell script com_pdfcrop
      

      Ottengo l'errore error "sh: /usr/local/texlive/2016/texmf-dist/scripts/pdfcrop: is a directory" number 126

  • tuttavia, quando chiamo direttamente il mio script python dal terminale (non da dentro il applescript), esso produce la fine del pdf ritagliata

         os.chdir(cur_path)
         cmd_pdflatex = '/Library/TeX/texbin/pdflatex temp.tex'
         if talk_to_me is True:
             print "command for executing pdflatex:\n    ", cmd_pdflatex
         os.system(cmd_pdflatex)
    

Ora,

  • è il comando do shell script il modo migliore in questo caso per chiamare uno script python all'interno di applescript?
  • quali potrebbero essere alcuni motivi per questo comportamento?
  • che cosa implica l'errore "numero non è una directory" 126 (ho cercato su google, ma sfortunatamente, sfortunatamente)?
  • quale errore potrebbe verificarsi tra chiamare pdfcrop da uno script python tramite os.system(...) o da un applescript che chiama lo stesso identico script python tramite do shell script ... ?

aggiornamento 20160616 12:32

a) come ha sottolineato Mark, questo è un po 'confuso, quindi l'ho semplificato in un applecript: b) in qualche modo mi sono confuso con i link e le directory reali in cui TexLive memorizza le cose; così ho aggiornato per chiamare pdfcrop da quello che presumo sia la directory corrente in qualsiasi momento

tell application "Finder" to get folder of (path to me) as Unicode text
set presentDir to POSIX path of result
set presentDirStr to result
set com_pdfcrop to {"cd " & presentDirStr & ";/usr/local/texlive/2016/bin/x86_64-darwin/pdfcrop temp.pdf"}
do shell script com_pdfcrop

Ora ricevo da questo applescript error "!!! Error: Ghostscript exited with error code 127!" number 127

aggiornamento 20160616 13:16

ora funziona, ecco alcuni pensieri:

  • il mio ~/.bash_profile ha aggiunto /usr/texbin/: al percorso. Sono sicuro che questo era necessario per qualcosa ad un certo punto.
  • Attualmente l'ho rimosso, ma ciò ha portato al problema che pdfcrop.pl situato in /usr/local/texlive/2016/texmf-dist/scripts/pdfcrop non ha trovato pdftex . Originariamente la riga 352 conteneva $::opt_pdftexcmd = "pdftex"; che ho cambiato in $::opt_pdftexcmd = "/Library/TeX/texbin/pdftex";

Questo significa che funziona ora, ma probabilmente mi trovo di nuovo in questo pasticcio, quando deciderò di aggiornare TexLive, probabilmente nel 2017.

    
posta Claus 16.06.2016 - 09:28
fonte

0 risposte

Leggi altre domande sui tag