让TeX使用SageTeX

Sage在很大程度上是自包含的,但仍有一些地方需要手动配置才能正常使用。就比如说SageTeX。

SageTex允许您将Sage的计算结果嵌入到LaTex文件中。它随着Sage默认安装到计算机中,但在让它能配合LaTeX一起工作之前,需要一些工作来配置TeX。

TeX需要能找到sagetex.sty文件,它位于SAGE_ROOT/local/share/texmf/tex/latex/sagetex/下,其中SAGE_ROOT为Sage的安装目录。如果TeX能找到该文件,SageTeX才能被调用,这可以通过以下几种方式:

  • sagetex.sty文件复制到您的TeX文档的工作目录下。这方法很有效,因为在对文档进行渲染的过程中,同目录下的文件是最先被搜索到的。

    有些小问题在于,这会让你的计算机里有许多个sagetex.sty的副本。更严重的问题是在你升级Sage的版本后,SageTeX也会更新,这会造成文档中的Python代码与LaTex代码出现兼容问题。

  • 第二种方式是使用TEXINPUTS环境变量。你可以在bash中输入
    1. $ export TEXINPUTS="SAGE_ROOT/local/share/texmf//:"
    其中SAGE_ROOT为Sage的安装目录。注意要使用双引号,并且在最后面使用冒号。这样TeX就能找到SageTex样式文件了。如果你想永久保留这个更改,你可以将这个命令添加到.bashrc中。如果你使用了其他的shell,你需要对上述操作进行修改,详细过程可以参照对应shell的文档。
  • 第三个(也是最为推荐的)方式是将sagetex.sty文件复制到你的用户目录中的文件夹下。在大多数TeX发行版中,texmf会自动在用户目录下搜索包。要指定搜索目录,可以使用以下命令:

    1. $ kpsewhich -var-value=TEXMFHOME

    这会输出一个类似/home/drake/texmf/Users/drake/Library/texmf的文件夹路径。使用下面的命令将SAGE_ROOT/local/share/texmf/下的tex/文件夹整个复制到你的用户目录中的texmf文件夹下

    1. $ cp -R SAGE_ROOT/local/share/texmf/tex TEXMFHOME

    其中SAGE_ROOT为Sage的安装目录,TEXMFHOME是在第一步中得到的kpsewhich的输出。

    如果你升级了Sage后发现SageTex不能正常工作,可以重新进行上述步骤,这样TeX下的SageTeX就可以与Sage同步更新了。

  • 要在多用户的系统中使用SageTex,你只需对上面的步骤进行修改,来将sagetex.sty复制到系统级的TeX文件夹下。最好使用下面命令的输出而不是TEXMFHOME
    1. $ kpsewhich -var-value=TEXMFLOCAL
    这会产生类似/usr/local/share/texmf的结果。将tex文件夹整个复制到TEXMFLOCAL文件夹下。以root用户使用下面的命令来更新TeX软件包的数据库
    1. $ texhash TEXMFLOCAL
    注意替换TEXMFLOCAL的内容。这样你的计算机上的所有用户都可以通过LaTeX和Sage来使用SageTeX了。

警告: 在使用sagetex.sty来渲染你的文档时,必须要让LaTeX与当前SageTeX的版本对应。如果你更新了你的Sage版本,你应当将计算机上的所有旧版本的sagetex.sty删除。

出于这个原因,我们建议您将SageTex文件复制到用户目录下的texmf文件夹中(上述第三种方式)。这样在升级Sage版本之后您只需将整个SageTex文件夹复制过去就能正常使用。