在 Windows 下使用 Lyx 运行 pythonTeX

在 Windows 下使用 Lyx 运行 pythonTeX

我正在努力pythonTeX在 Windows 10 中按照以下步骤运行 Lyx 2.4.1帖子。我已经安装了 pythonTeX,并在使用以下命令运行测试文件时验证了它是否可以正常工作:

  1. pdflatex test.tex(这将生成 pytx 代码)
  2. pythontex.bat test.tex(解析 pytx 代码)
  3. pdflatex test.tex(这将生成 pdf)

在 Lyx 中,我按照上一篇文章中的讨论设置了文件格式:

  1. 格式= LaTeX (pytex1);短名称= pytex1;扩展名=pytex1ext
  2. 格式= LaTeX (pytex2);短名称= pytex2;扩展名=tex
  3. 格式= PDF (pytex);短名称= pytex;扩展名=pdf

和转换器:

  1. 从= LaTeX (pdflatex);到= LaTeX (pytex1);转换器= pdflatex $$i;额外=latex=pdflatex
  2. 从= LaTeX (pytex1);到= LaTeX (pytex2);转换器= pythontex.bat $$i;额外=``
  3. 从= LaTeX (pytex2);到= PDF (pytex);转换器= pdflatex $$i;额外=latex=pdflatex

它遵循上面描述的测试运行。

这并没有按预期工作;转换的第 1 步工作正常,即pdflatex在 tex 文件上运行以创建 pytx 代码。但是,第 2 步失败并显示以下消息:

09:11:07.158: pythontex.bat "test.pytex1ext"
09:11:07.188: 
09:11:07.193: C:\Users\xxx\AppData\Local\Temp\lyx_tmpdir>python "c:/users/xxx/documents/localtexmf/scripts/pythontex/pythontex.py" test.pytex1ext 
09:11:07.575: Traceback (most recent call last):
09:11:07.580:   File "c:/users/xxx/documents/localtexmf/scripts/pythontex/pythontex.py", line 50, in <module>
09:11:07.584:     import pythontex2 as pythontex
09:11:07.587:   File "c:\users\xxx\documents\localtexmf\scripts\pythontex\pythontex2.py", line 60, in <module>
09:11:07.590:     import multiprocessing
09:11:07.592: ImportError: No module named multiprocessing
..\..\..\src\support\Systemcall.cpp (292): Systemcall: 'pythontex.bat "test.pytex1ext"' finished with exit code 1
Error: Cannot convert file

这显然会失败,因为C:\Users\xxx\AppData\Local\Temp\lyx_tmpdir没有文件test.pytex1ext是格式 1 中定义的扩展名,只有文件test.tex。那么当我将扩展名更改为时会发生什么tex?然后第二步尝试运行:

pythontex.bat 'tmpfile.out'

这显然也不存在。谁知道如何解决这个问题?我已经接近成功了,但还是无法让它工作。

注意:模块上的 ImportErrormultiprocessing让我有点担心,因为从命令提示符运行时它工作正常pythotex.bat,但我想先正确获取扩展并查看问题是否仍然存在。

答案1

事实证明,这ImportError问题;显然 LyX 使用自己的 Python 版本。为了解决这个问题,我用我安装的 Python 版本的软链接替换了 Python 版本。或者,您可以在首选项中设置正确的 PATH 变量。

导致问题的第二件事是在步骤 1 中创建 pdf;如果 pdf 已经存在,Lyx 将不会编译新的 pdf。对我来说,一个快速的解决方法是pythontex.bat在调用 之前插入以下几行pythontex.py

set argin=%1
del %argin:pytex1ext=pdf%

请注意,如果这些文件用作具有矢量图形的图像格式,这将跳过任何其他生成的 pdf。

相关内容