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 apdflatex
. -
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 tramitedo 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 trovatopdftex
. 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.