答案1
谢谢您的指点,Scott。这个过程确实需要(大量)使用转换器。
编辑:第 11 步之后是快速而粗糙的解决方案。
假设您已经安装了 PythonTeX。
转换器实用程序用于将一种文件格式转换为另一种文件格式。由于 LyX 已经有从 LyX --> Tex --> PDF 进行转换的方法,我们需要让它相信它正在执行其他操作。因此我们创建了一些额外的文件类型。
步骤 1) 在 LyX 中,选择“工具”,然后选择“首选项”。选择“文件处理”。选择“文件格式”。
步骤2)选择“新建”。填写以下字段:
Format: PythonTeXStep1
Shortname: pytexs1
extension: pytexs1extension
其余内容保留不变。单击“保存”。
现在我们创建更多文件类型(使用相同的“文件格式”菜单):
步骤3)选择“新建”。填写以下字段:
Format: PythonTeXStep2
Shortname: pytexs2
extension: tex
其余内容保留不变。单击“保存”。
步骤4)选择“新建”。填写以下字段:
Format: PythonTeXPDF
Shortname: PyTeXPDF
extension: pdf
其余内容保留不变。单击“保存”。
现在我们需要告诉 LyX 我们希望如何进行这些文件类型的转换:
步骤 5)(在工具-->首选项-->文件处理下)选择“转换器”。
步骤6)更改字段如下:
From format: LaTeX(LuaTeX)
To format: PythonTeXStep1
Converter: pdflatex $$i
步骤 7)点击“添加”
步骤8)更改字段如下:
From format: PythonTeXStep1
To format: PythonTeXStep2
Converter: pythontex.py $$i
步骤 9)点击“添加”
步骤10)更改字段如下:
From format: PythonTeXStep2
To format: PythonTeXPDF
Converter: pdflatex $$i
步骤11)单击“添加”。
现在您已经准备就绪。创建文件,随意调用 pythonTeX 命令。当您准备从 LyX 导出时,请转到文件 --> 导出 --> 更多格式和选项,选择“PythonTeXPDF”,然后选择“确定”。
要测试这是否有效,可以在新文档中按 Control + L 打开“ERT”框来制作一个基本的 PythonTeX 脚本。在 ERT 框中粘贴:
\begin{pycode}
print('llamas!')
\end{pycode}
斯科特,你又说对了。步骤 1-11 可以用以下步骤替代:
编辑您的 lyx 首选项文件(默认情况下应为 ~/.lyx/preferences),如下所示:
在格式部分粘贴:
\format "PyTeXPDF" "pdf" "PythonTeXPDF" "" "" "" ""
\format "pytexs1" "pytexs1extension" "PythonTeXStep1" "" "" "" ""
\format "PyTeXs2" "tex" "pythonTeXs2" "" "" "" ""
并在转换器部分粘贴:
\converter "luatex" "pytexs1" "pdflatex $$i" ""
\converter "pytexs1" "PyTeXs2" "pythontex.py $$i" ""
\converter "PyTeXs2" "PyTeXPDF" "pdflatex $$i" ""
答案2
只需更改转换器或添加新转换器即可。转到工具 > 首选项 > 文件处理 > 转换器。选择要更改的转换器,例如LaTeX (pdflatex) -> PDF (pdflatex)
。然后只需编辑字段即可converter
。
有关更多信息,请参阅帮助 > 自定义 > 3.3 转换器。
请参阅以下屏幕截图:
答案3
我按照 BenB 的解决方案操作,但是遇到了两个问题:
- 如果某个转换步骤失败,Lyx 将不会生成任何有用的错误消息。
- Lyx 不再运行 bibtex。
因此,我在 bash-script 中创建了一个简单的包装器,它再次调用 pdflatex、pythontex 和 pdflatex:
#!/bin/bash
pdflatex $@ && pythontex $1 && pdflatex $@
然后我将 lyx 中的 PDF 转换器指向这个 bash 文件而不是 pdflatex。
这至少解决了 lyx 不再调用 bibtex 的问题。我最终创建了一个更高级的 bash 脚本,它具有更好的错误报告功能,仅在需要时运行 pythontex,并且可能从 python 代码内部发出请求以运行 pythontex 两次,请参阅这个 github 项目:
https://github.com/mghansen256/pythontex-wrapper
由于它是用 bash 脚本编写的,所以它还不是跨平台的,但没有理由不能将它移植到 Python 上。
答案4
在 LyX 2.2 和 ubuntu 14.04 上遇到同样的问题。通过放置此转换器解决:
\converter "pytexs1" "PyTeXs2" "pythontex $$i" ""
代替
\converter "pytexs1" "PyTeXs2" "pythontex.py $$i" ""