如何在Windows上运行SageTeX?

时间:2017-12-14 18:42:50

标签: python sage

我想在LaTeX中使用Sage,如何在Windows上运行Sagemath 8.0?我使用MikTeX发行版。

我按照Sagemath的说明操作,但它们是用于linux的。我添加了sagetex包,它会生成一个myfile.sage文件,但是当我启动Sage shell并运行sage myfile.sage时,它会显示

Traceback (most recent call last):
  File "myfile.sage.py", line 7, in <module>
    _st_ = sagetex.SageTeXProcessor('myfile')
  File "/opt/sagemath-8.0/local/lib/python2.7/site-packages/sagetex.py", line 76, in __init__
    raise VersionError, errstr
sagetex.VersionError: versions of .sty and .py files do not match.
myfile.sagetex.sage was generated by sagetex.sty version "None", but
is being processed by sagetex.py version "2015/08/26 v3.0-92d9f7a".
Please make sure that TeX is using the sagetex.sty
from your current version of Sage; see
http://www.sagemath.org/doc/installation/sagetex.html.

3 个答案:

答案 0 :(得分:2)

有一种在Windows上使用sagetex的方法:

第1步:完整安装miktex 2.9 64位。

第2步:安装64位Texniccenter 2.02(我认为像texworks,texmaker,winedtt等其他程序也可以使用。

第3步:安装64位或更高版本的Sagemath 8.6。

第4步:miktex中的Sagetex版本与Sagemath 8.6中的sagetex版本不同。然后,您应该在miktex中安装与Sagemath中相同版本的sagetex。

这可以通过将** c:\ Program Files \ SageMath 8.6 \ runtime \ opt \ sagemath-8.6 \ local \ share \ texmf \ tex \ latex \ sagetex **中的所有文件复制到** c:\ Program中来完成文件\ MiKTeX 2.9 \ tex \ latex \ sagetex **

现在可以在Windows上使用sagetex了:

1。-使用texniccenter编译.tex文档。请记住,您必须加载sagetex软件包: \ usepackage {sagetex}

2.-在Windows上安装Sagemath时有3个shotcurts。您应该打开 Sagemath 8.6 ,而不是 Sagemath 8.6 Shell Sagemat 8.6 Notebook 。请记住, Sagemath 8.6 。之后,打开一个外壳,当我们看到 sage:时,sagemath已准备就绪。

3.--使用“ cd”命令导航到我们的文件所在的文件夹,例如 cd文档。重要的是,如果您文件夹的名称之间有空格,请将其放置在''之间,即 cd'文件夹1'

4.-进入目标文件夹时,可以用“ ls”查看其内容。应该有您的sagetex.sage文件。要处理文件,您必须编写 load('file.sagetex.sage')(文件是.tex文件的名称),并且在按Enter键时将开始处理。

5.-最后,使用texniccenter再次编译.tex文件。

当您需要再次使用鼠尾草时,不需要编写命令,因为使用键盘上的向上箭头会出现命令,而您只需要按Enter键即可。

我认为使用texniccenter上的后处理器可以自动化3个步骤,但是我现在不知道该怎么做。

答案 1 :(得分:1)

以下是适用于Windows的完整说明。

  1. 找到您的sage安装的sagetex.sty文件,可能是C:\Program Files\SageMath 8.0\runtime\opt\sagemath-8.0\local\share\texmf\tex\latex\sagetex\sagetex.sty
  2. 通过在命令提示符下的任何位置运行TeX命令sagetex.sty,找出您的计算机找到的kpsewhich sagetex.sty。可能这是您的MikTeX(或TeX Live或您正在使用的任何发行版)目录,其中包含导致版本不匹配的旧sagetex.sty。如果你弹出一个要求你安装的弹出窗口,那么就不要安装!
  3. 我不完全确定,但我认为你可以将你的sage安装的新软件包文件复制到你的发行版的sagetex目录中(对于MikTeX,如C:\Users\s156757\AppData\Roaming\MiKTeX\2.9\tex\latex\sagetex覆盖那里的旧sagetex.sty 。如果没有,请确保删除旧文件并使用新文件,例如将其放在tex文件旁边。
  4. 您可能需要手动安装sagetex需要的软件包fancyvrb,例如MikTeX软件包管理器。
  5. 每次向LaTeX添加新的Sage时:运行LaTeX文件,启动Sage shell并转到刚刚放置myfile.sagetex.sage的目录,该目录与所有辅助文件的目录相同是:cd "C:/path/to/auxiliary/files"sage myfile.sagetex.sage,然后再次运行LaTeX。例如,其他人都需要.scmd.sout文件来编译您的LaTeX。
  6. 使用SageTeX,例如$\sage{1+1}$sageblock环境。

答案 2 :(得分:0)

作为 mentioned by Pedro Jose Moreno Garcia,在提出这个问题几年后,一条新的 sage arara 规则是 written by the TeXnician(由 Pedro 修正),它适用于 Windows。完整的说明如下,使用 sagetex 和一个命令编译你的 LaTeX 文件。

  1. 安装 MiKTeX 和 Sagemath
  2. 确保 MiKTeX 没有安装 sagetex 包
  3. 找出您的 SageTeX 安装路径,例如用户安装的 C:\Program Files\SageMath 9.2C:\Users\myusername\AppData\Local\SageMath 9.2
  4. 使用环境变量 TEXINPUTS=C:\Users\myusername\AppData\Local\SageMath 9.2\runtime\opt\sagemath-9.2\local\share\texmf\tex\latex\sagetex; 编译您的 LaTeX 文件,以便它找到 sagetex.sty 包。 (使用 TeXiFy 编辑器验证。)如果这不起作用,您当然可以始终将 sagetex.sty 包复制到您的工作目录。
  5. 创建 arara 规则。您可以按如下方式将其保留在本地(还有更多可能性,请参阅 arara 文档):在您的 LaTeX 文件旁边创建一个文件 araraconfig.yaml,内容如下
!config
paths:
- .
  1. 使用 https://tex.stackexchange.com/questions/520683/arara-sage-a-sagemath-rule-for-arara 中的内容创建名为 sagetex.yaml 的文件(更改安装路径):
!config
# SageTeX-Rule for arara.
#
# Dear Windows-users, please check the paths
# pathToBashExecutive    and    pathToSageStartfile
# due to your Sage-installation!
#
identifier: sagetex
name: SageTeX
authors:
  - TeXnician (Author)
  - cis (Idea)
  - Pedro J (final fix)
arguments: []
commands:
  - name: A SageTeX Rule for arara
    command: >
      @{
          pathToBashExecutive = "C:\\Users\\myusername\\AppData\\Local\\SageMath 9.2\\runtime\\bin\\bash";
          pathToSageStartfile = "C:/Users/myusername/AppData/Local/SageMath 9.2/runtime/opt/sagemath-9.2/sage";
          pathOfCurrentWorkingFolder = currentFile().getParent();
          theWindowsCommand = getCommand(pathToBashExecutive, "-l", pathToSageStartfile, "-c", "os.chdir(r'" + pathOfCurrentWorkingFolder + "'); load('" + getBasename(currentFile()) + ".sagetex.sage')");
          return isWindows(theWindowsCommand, getCommand("sage", getBasename(reference) + ".sagetex.sage"));
         }
  1. 运行arara myfile.tex