使用 LyX 的 Pythontex 工作流程

使用 LyX 的 Pythontex 工作流程

我最近了解到PythonTeX会议报告)。这是一个允许您在 LaTeX 文档中执行 Python 代码的工具。例如,这对于在 TeX 文档中创建 matplotlib 图形非常有用。

根据手册(可从上面的 Github 链接获取),要编译文档,需要运行 latex,运行包含的 python 脚本,然后再次运行 latex。我可以设置 LyX 来为我执行所有这些操作吗?

答案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" ""

相关内容