John K wrote:


I am trying to auto-generate a diagram from a Python script in my Lyx document using the "External 
Material" function. I have created a Python script called "myscript.py" which generates a 
diagram and saves it to "myscript.pdf". I am trying to make Lyx run my script to generate the 
diagram when I export my document to PDF.

I added the following to the Lyx external_templates file:

Template Python
GuiName "Python: $$AbsOrRelPathParent$$Basename"
HelpText
Python diagram.
HelpTextEnd
InputFormat "*"
FileFilter "*.py"
AutomaticProduction true
Preview Graphics
Format PDFLaTeX
Product "\\includegraphics{$$AbsPath$$Basename.pdf}"
Requirement "graphicx"
UpdateCommand "python $$AbsPath$$Basename.py"
UpdateFormat pdf
UpdateResult "$$AbsPath$$Basename.pdf"
Requirement "graphicx"
ReferencedFile pdflatex "$$AbsPath$$Basename.pdf"
FormatEnd
TemplateEnd

However, when I insert the Python script in Lyx, it draws a box that says "Error 
converting to loadable format".
This isn't critical, it merely means you won't get a preview within LyX because of a failure to convert to something displayable. (png, I believe.)

Of course, this may also be a symptom of what's wrong with the main conversion.

If I try exporting to PDF using pdflatex, I get the following error:

"Missing $ inserted. Missing { inserted. I've inserted a begin-math/end-math symbol 
since I think you left one out. Proceed, with fingers crossed."

If I export to Latex using pdflatex, it seems to export correctly, and my text 
file contains something like this:

begin{document}
\includegraphics{C:/Documents and Settings/MyUsername/Desktop/myscript.pdf}
\end{document}

However, it doesn't run my update command, i.e. doesn't run the Python script. (I've even 
tried changing my update command to things like "echo test> output.txt" but I 
can't seem to get any commands to run at all.)

That is the problem, and I guess it explains why everything else goes wrong too.

First thing to check: is python in the path? I.e. can you give the command "python filename.py" on the command line - will that work?

If python isn't in the path, then LyX won't find it.

If this succeed, will the latex export then work, as long as the manually converted file is present?


Any ideas what I am doing wrong? I've tried on Lyx 1.6.3 and 1.6.5-1 on Windows 
XP.

Another wild guess: You have a path with spaces in it, e.g. "Documents and Settings". Some versions of LyX can't deal with that. Some can, but you have to take care when a path is passed to external utilities (such as python) Otherwise, you risk that:

python "C:\documents and settings\folder\file.py"
becomes
python "C:\documents" "and" "settings\folder\file.py"
and the latter just won't work.

To check if you have space problems, copy the document and all files
to some space-free path such as C:\test\
See if that changes anything.

Helge Hafting

Reply via email to