en OSX, estoy usando applecript para obtener una cadena de látex de una aplicación (OmniOutliner), procesarla a través de un script de python que llama a pdflatex
y pdfcrop
, y pegar el pdf recortado final nuevamente en OmniOutliner. Consulte los detalles en github .
Desde que actualicé a OS 10.11 El Capitan y TexLive-2016 me he encontrado con un problema extraño:
- applescript llama al script de python que llama a
pdflatex
, que todo funciona bien, después de que cambié las rutas apuntando apdflatex
. -
ahora, cuando ejecuto
pdfcrop
desde-
ya sea dentro de la secuencia de comandos de python dentro de applecript
set com to {"source ~/.bash_profile; cd " & presentDirStr & "; python create_latex_pdf.py " & strNoteQ} do shell script com
-
o directamente desde AppleScript: '
set com_pdfcrop to {"source ~/.bash_profile; cd " & presentDirStr & ";/usr/local/texlive/2016/texmf-dist/scripts/pdfcrop temp.pdf"} do shell script com_pdfcrop
Recibo el error
error "sh: /usr/local/texlive/2016/texmf-dist/scripts/pdfcrop: is a directory" number 126
-
-
sin embargo, cuando llamo a mi script de Python directamente desde el terminal (no desde AppleScript), produce la multa del pdf recortada
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)
Ahora,
- ¿el comando
do shell script
es la mejor forma en este caso de llamar a un script de python desde AppleScript? - ¿Cuáles podrían ser algunas de las razones de este comportamiento?
- ¿Qué implica el error número 126 "no es un directorio" (implícito en Google, pero desafortunadamente, desafortunadamente)?
- ¿Qué error podría ocurrir entre llamar a pdfcrop desde un script de python a través de
os.system(...)
o desde un applecript que llame exactamente a ese mismo script de python a través dedo shell script ...
?
actualización 20160616 12:32
a) como señaló Mark, esto es un poco confuso, así que simplifiqué esto en un applecript:
b) de alguna manera me confundí con los enlaces y directorios reales donde TexLive almacena cosas; así que actualicé para llamar a pdfcrop
desde lo que supongo que es el directorio actual en cualquier 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
Ahora obtengo de este applecript error "!!! Error: Ghostscript exited with error code 127!" number 127
actualización 20160616 13:16
funciona ahora, aquí hay algunos pensamientos:
- mi
~/.bash_profile
ha agregado/usr/texbin/:
a la ruta. Estoy seguro de que esto fue necesario para algo en algún momento. - Actualmente, lo saqué, pero eso llevó al problema de que
pdfcrop.pl
ubicado en/usr/local/texlive/2016/texmf-dist/scripts/pdfcrop
no pudo encontrarpdftex
. Originalmente, la línea 352 contenía$::opt_pdftexcmd = "pdftex";
, que cambié a$::opt_pdftexcmd = "/Library/TeX/texbin/pdftex";
Esto significa que funciona ahora, pero probablemente me meto en este lío de nuevo, cuando decido actualizar TexLive, probablemente en 2017.