PythonTeX——安装与基本使用方法

最近为了解决在LaTeX下的计算问题,寻找了很多解决方案。我首先使用了calculator & calculus宏包,但是受限于LaTeX本身局限的长度计算功能和感人的精度,我抛弃了这个选项;之后我看到了CalcTeX这个项目,但是这个只有一个雏形,而且只支持Linux。这个PythonTeX是我目前找到的最适合解决这个问题的方案,因为这个问题的本质是引入Python脚本解决LaTeX本身语法无法解决或者很难解决的问题,所以实际上其功能远不止计算算式了。

传送门:CTAN链接 GitHub链接

PythonTeX简介

PythonTeX本质是一个和MakeIndex和BibTeX一样的TeX辅助编译工具,主要实现在TeX文档中插入Python代码,并将执行结果输出到源文档的功能。因为PythonTeX是编译工具,所以和一般宏包不同,他不仅仅需要使用\includepackage命令包含宏包,同时还需要安装PythonTeX程序和Python环境。

PythonTeX安装

  1. 首先PythonTeX环境需要Python环境,且需要2.7或者3.2以上的Python版本,Windows和Mac OS X用户直接到官网下载安装包即可;Linux用户使用apt-get(Ubuntu)或者yum(centos)安装即可。
  2. PythonTeX需要Python的Pygment库,这个库直接在安装好Python后使用pip install pygment安装即可。(Linux下还要单独安装Python-pip)
  3. 对于Windows 下的MikTeX用户,因为MikTeX已经集成了PythonTeX,宏包安装工具会在第一次调用pythontex命令的时候提示安装,所以可以略过此步;TeX Live参照官方说明,使用python进行安装。
  4. 目前绝大多数TeX编辑环境都没有设置PythonTeX的命令,这个需要在响应的TeX编辑器中添加命令,这里以TeXworks为例:在设置菜单(Edit->Preference->Typesetting->Processing Tools)点击加号,在Program中填pythontex,argument中填$fullname即可。
  5. PythonTeX需要如下宏包支持:fancyvrb, fvextra, etoolbox, xstring, pgfopts, newfloat (part of the caption bundle), currfile, and color or xcolor,除了上述宏包意外pythontex宏包也需要安装。

PythonTeX基本使用方法

首先需要在引言中引入pythontex宏包

\usepackage{pythontex}

PythonTex有五个基本命令和四个基本环境,五个命令分别是

\py{1+1} %直接输出结果
\pyc{var = 3} %仅执行Python代码
\pyb{var = 4} %执行并输出Python代码
\pyv{var = 5} %仅输出Python代码
\pys{\verb|var = !{var}|} %在输出LaTeX代码的过程中执行代码并输出,!{var}为执行的代码

上面五行代码执行后的结果分别是

  • 第一行:2(输出的是1+1的计算结果)
  • 第二行:无输出(Python中变量var被赋值为3)
  • 第三行:var = 4(Python中变量var被幅值为4)
  • 第四行:var = 5(Python中变量var的值未改变,仍为4)
  • 第五行:var = 4(Python中变量var的值为4,所以4被输出)

而四个环境则分别对应上面第二个到第五个命令,可以同时包含多行代码

\begin{pycode} %仅执行Python代码
var = 3
\end{pycode}

\begin{pyblock} %执行并输出Python代码
var = 4
\end{pyblock}

\begin{pyverbatim} %仅输出Python代码
var = 5
\end{pyverbatim}

\begin{pysub} %在输出LaTeX代码的过程中执行代码并输出,!{var}为执行的代码
\verb|var = !{var}|
\end{pysub}

常见的几个问题和解决方案

缩进问题

使用PythonTeX时建议使用空格进行代码缩进,而且多行代码时每行代码顶头写。如果使用XeLaTeX,并使用tab缩进,在运行pythontex时会出错,这是因为xelatex将tab编码为^^I,而Python无法识别,此时可以尝试XeLaTeX –8bit命令(似乎新版已经取消了这个命令支持)。

编译找不到.pytxcode文件

如果使用MikTeX,并使用其自带的texify程序进行编译,请不要带–clean参数,这个参数会删除编译产生的.pytxcode文件,导致继续进行pythontex不能成功。

 

参考:

[1] Geoffrey M. Poore, The pythontex package, 2016/07/21

发表评论