使用SageTeX

SageTeX包允许您将Sage计算的结果嵌入到LaTeX文档中。要使用它,您需要先“安装”它(请参见 让特克斯知道萨基特克斯

一个例子

下面是一个使用SageTeX的简单示例。完整的文档可以在 SAGE_ROOT/local/share/doc/sagetex 在哪里 SAGE_ROOT 是Sage安装所在的目录。该目录包含文档和示例文件。看到了吗 SAGE_ROOT/local/share/texmf/tex/latex/sagetex 一些可能有用的Python脚本。

要了解SageTeX的工作原理,请按照安装SageTeX的说明(中 让特克斯知道萨基特克斯 )把下面的文字复制到一个名为, st_example.tex

警告

如果您在“实时”帮助中查看此内容,下面的文本将有几个有关未知控制序列的错误。使用静态版本查看正确的文本。

\documentclass{article}
\usepackage{sagetex}

\begin{document}

Using Sage\TeX, one can use Sage to compute things and put them into
your \LaTeX{} document. For example, there are
$\sage{number_of_partitions(1269)}$ integer partitions of $1269$.
You don't need to compute the number yourself, or even cut and paste
it from somewhere.

Here's some Sage code:

\begin{sageblock}
    f(x) = exp(x) * sin(2*x)
\end{sageblock}

The second derivative of $f$ is

\[
  \frac{\mathrm{d}^{2}}{\mathrm{d}x^{2}} \sage{f(x)} =
  \sage{diff(f, x, 2)(x)}.
\]

Here's a plot of $f$ from $-1$ to $1$:

\sageplot{plot(f, -1, 1)}

\end{document}

运行 Latex st_example.tex 像往常一样。注意, Latex 会有一些投诉,包括:

Package sagetex Warning: Graphics file
sage-plots-for-st_example.tex/plot-0.eps on page 1 does not exist. Plot
command is on input line 25.

Package sagetex Warning: There were undefined Sage formulas and/or
plots. Run Sage on st_example.sagetex.sage, and then run LaTeX on
st_example.tex again.

请注意,除了LaTeX生成的通常文件集合之外,还有一个名为 st_example.sagetex.sage . 这是运行LaTeX时生成的一个Sage脚本 st_example.tex . 警告信息告诉你运行Sage st_example.sagetex.sage ,所以听从它的建议去做。它会告诉你用 Latex st_example.tex 同样,在执行此操作之前,请注意已创建了一个新文件: st_example.sagetex.sout . 该文件包含Sage的计算结果,其格式可用于LaTeX插入到文本中。还创建了一个包含绘图的EPS文件的新目录。再次运行LaTeX,您将看到Sage计算和绘制的所有内容现在都包含在文档中。

上面使用的不同宏应该很容易理解。A sageblock 环境逐字排版您的代码,并在您运行Sage时执行代码。当你这么做的时候 \sage{{foo}} ,放入文档中的结果就是从运行中获得的任何结果 latex(foo) 里面有Sage。Plot命令有点复杂,但形式最简单, \sageplot{{foo}} 插入从中获得的图像 foo.save('filename.eps') .

一般来说,咒语是:

  • 在.tex文件上运行LaTeX;

  • 在生成的.Sage文件上运行Sage;

  • 再次运行 Latex 。

如果您没有更改文档中的任何Sage命令,则可以省略运行Sage。

SageTeX还有很多内容,由于Sage和LaTeX都是复杂、功能强大的工具,所以最好阅读SageTeX的文档,它位于 SAGE_ROOT/local/share/doc/sagetex .

让特克斯知道萨基特克斯

Sage基本上是自给自足的,但有些部分确实需要一些干预才能正常工作。SageTeX就是其中之一。

SageTeX包允许将Sage的计算和绘图嵌入到LaTeX文档中。默认情况下,SageTeX安装在Sage中,但是要在LaTeX文档中使用SageTeX,您需要让TeX安装知道它才能工作。

关键是TeX需要能够找到 sagetex.sty ,可以在 SAGE_ROOT/local/share/texmf/tex/latex/sagetex/ 在哪里 SAGE_ROOT 是生成或安装Sage的目录。如果特克斯能找到 sagetex.sty ,那么SageTeX就可以工作了。有几种方法可以做到这一点。

  • 第一个也是最简单的方法就是复制 sagetex.sty 放到与LaTeX文档相同的目录中。由于在排版文档时总是搜索当前目录,因此这将始终有效。

    但是,这有两个小问题:第一个问题是,您将得到许多不必要的副本 sagetex.sty 散落在你的电脑上。第二个也是更严重的问题是,如果升级Sage并获得SageTeX的新版本,SageTeX的Python代码和LaTeX代码可能不再匹配,从而导致错误。

  • 第二种方法是使用 TEXINPUTS 环境变量。如果您使用bashshell,您可以

    $ export TEXINPUTS="SAGE_ROOT/local/share/texmf//:"
    

    在哪里? SAGE_ROOT 是Sage安装的位置。请注意,该行末尾的双斜杠和冒号很重要。此后,TeX和朋友将找到SageTeX样式的文件。如果您想使此更改永久化,可以将上面的行添加到 .bashrc 文件。如果您使用的是不同的shell,则可能需要修改上面的命令以使环境变量为已知;请参阅shell的文档以了解如何做到这一点。

    此方法的一个缺陷是,如果您使用TeXShop、Kile或Emacs/AucTeX等应用程序,则它们不一定会选择环境变量,因为当它们运行LaTeX时,它们可能会在通常的shell环境之外执行此操作。

    如果要移动Sage安装,或者将新版本安装到新目录中,则需要更新上面的命令以反映 SAGE_ROOT .

  • 第三种(也是最好的)让特克斯意识到 sagetex.sty 是将该文件复制到主目录中方便的位置。在大多数TeX分布中 texmf 主目录中的目录将自动搜索包。若要确切了解此目录是什么,请在命令行上执行以下操作:

    $ kpsewhich -var-value=TEXMFHOME
    

    它将打印出一个目录,例如 /home/drake/texmf/Users/drake/Library/texmf . 复制 tex/ 目录来自 SAGE_ROOT/local/share/texmf/ 到你家里去 texmf 目录的命令如下

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

    在哪里? SAGE_ROOT 像往常一样,替换为Sage安装的位置和 TEXMFHOME 是由于 kpsewhich 上面的命令。

    如果升级Sage并发现SageTeX不再工作,只需重复这些步骤,SageTeX的Sage和TeX部分将再次同步。

  • 对于在多用户系统上的安装,您只需适当地修改上面的说明以进行复制 sagetex.sty 到系统范围的TeX目录中。而不是目录 TEXMFHOME ,可能最好的选择是使用

    $ kpsewhich -var-value=TEXMFLOCAL
    

    可能会产生 /usr/local/share/texmf . 复制 tex 将上述目录放入 TEXMFLOCAL 目录。现在您需要更新TeX的包数据库,您只需运行

    $ texhash TEXMFLOCAL
    

    作为根目录,替换 TEXMFLOCAL 适当的。现在,您系统的所有用户都可以访问LaTeX包,如果他们也可以运行Sage,那么他们就可以使用SageTeX。

警告

很重要的是 sagetex.sty 在为文档排版时使用的LaTeX与Sage正在使用的SageTeX版本匹配。如果您升级Sage安装,您确实应该删除的所有旧版本 sagetex.sty 四处飘荡。

由于这个问题,我们建议将SageTeX文件复制到主目录的texmf目录(上面的第三种方法)。那么当您升级Sage时,您只需要做一件事(复制一个目录),以确保SageTeX能够正常工作。

SageTeX文档

虽然不是严格意义上的安装部分,但这里需要指出的是,SageTeX的文档保存在 SAGE_ROOT/local/share/doc/sagetex/sagetex.pdf . 在同一目录中还有一个示例文件—请参见 example.texexample.pdf ,用 Latex 和Sage文件排版的预设结果。你也可以从 SageTeX page .

SageTeX和TeXLive

一个可能令人困惑的问题是流行的TeX分发 TeXLive 2009 包括SageTeX。这看起来不错,但是对于SageTeX,Sage位和LaTeX位必须同步——这在本例中是个问题,因为Sage和SageTeX都经常更新,而TeXLive则不是。在撰写本文(2013年3月)时,许多Linux发行版已经转移到最新版本的TeXLive上,而2009年的发行版仍然存在,事实上,它是关于SageTeX的大多数bug报告的来源!

因为这个,它是 强烈推荐 你总是从Sage安装SageTeX的 Latex 部分,如上所述。以上说明将确保SageTeX的两个部分兼容并正常工作。不支持使用TeXLive提供SageTeX的 Latex 侧。