summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/sagetex/sagetex.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/sagetex/sagetex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/sagetex/sagetex.sty133
1 files changed, 78 insertions, 55 deletions
diff --git a/Master/texmf-dist/tex/latex/sagetex/sagetex.sty b/Master/texmf-dist/tex/latex/sagetex/sagetex.sty
index 16e9a2aefb1..79fccf61d07 100644
--- a/Master/texmf-dist/tex/latex/sagetex/sagetex.sty
+++ b/Master/texmf-dist/tex/latex/sagetex/sagetex.sty
@@ -5,10 +5,11 @@
%% The original source files were:
%%
%% sagetexpackage.dtx (with options: `latex')
+%% py-and-sty.dtx (with options: `latex')
%%
-%% This is a generated file.
+%% This is a generated file. It is part of the SageTeX package.
%%
-%% Copyright (C) 2008 by Dan Drake <ddrake@member.ams.org>
+%% Copyright (C) 2009 by Dan Drake <ddrake@member.ams.org>
%%
%% This program is free software: you can redistribute it and/or modify it
%% under the terms of the GNU General Public License as published by the
@@ -17,15 +18,15 @@
%%
%% This program is distributed in the hope that it will be useful, but
%% WITHOUT ANY WARRANTY; without even the implied warranty of
-%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-%% General Public License for more details.
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+%% Public License for more details.
%%
%% You should have received a copy of the GNU General Public License along
-%% with this program. If not, see <http://www.gnu.org/licenses/>
+%% with this program. If not, see <http://www.gnu.org/licenses/>.
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{sagetex}
- [2008/03/12 v1.4 embedding Sage into LaTeX documents]
+ [2009/06/17 v2.2.1 embedding Sage into LaTeX documents]
\RequirePackage{verbatim}
\RequirePackage{graphicx}
\RequirePackage{makecmds}
@@ -37,44 +38,55 @@
\setcounter{ST@plot}{0}
\newlength{\sagetexindent}
\setlength{\sagetexindent}{5ex}
-\newcommand{\ST@epsim}{False}
-\DeclareOption{imagemagick}{\renewcommand{\ST@epsim}{True}}
+\newif\ifST@paused
+\ST@pausedfalse
+\AtBeginDocument{\@ifundefined{ST@final}{%
+\newwrite\ST@sf%
+\immediate\openout\ST@sf=\jobname.sage%
+\newcommand{\ST@wsf}[1]{\immediate\write\ST@sf{#1}}%
+\ST@wsf{# This file (\jobname.sage) was *autogenerated* from the file \jobname.tex.}%
+\ST@wsf{import sagetex}%
+\ST@wsf{_st_ = sagetex.SageTeXProcessor('\jobname')}}%
+{\newcommand{\ST@wsf}[1]{\relax}}}
+\DeclareOption{final}{%
+ \newcommand{\ST@final}{x}%
+ \IfFileExists{\jobname.sout}{}{\AtEndDocument{\PackageWarningNoLine{sagetex}%
+ {`final' option provided, but \jobname.sout^^Jdoesn't exist! No Sage
+ input will appear in your document. Remove the `final'^^Joption and
+ rerun LaTeX on your document}}}}
+\DeclareOption{imagemagick}{%
+ \newcommand{\ST@useimagemagick}{x}%
+ \AtBeginDocument{%
+ \@ifundefined{ST@final}{%
+ \ST@wsf{_st_.useimagemagick = True}}{}}}
+\DeclareOption{epstopdf}{%
+\AtBeginDocument{%
+\@ifundefined{ST@final}{%
+ \ST@wsf{_st_.useepstopdf = True}}{}}}
\ProcessOptions\relax
-\newwrite\ST@sf
-\immediate\openout\ST@sf=\jobname.sage
-\newcommand{\ST@wsf}[1]{\immediate\write\ST@sf{#1}}
-\iffalse
-%% To get .sage files to automatically change the Python path to find
-%% sagetex.py, delete the \iffalse and \fi lines surrounding this and
-%% change the directory below to where sagetex.py can be found.
-\ST@wsf{import sys}
-\ST@wsf{sys.path.insert(0, 'directory with sagetex.py')}
+\InputIfFileExists{\jobname.sout}{}{\typeout{No file \jobname.sout.}}
+\AtBeginDocument{\provideenvironment{NoHyper}{}{}}
+\newcommand{\sage}[1]{\ST@wsf{%
+try:^^J
+ _st_.inline(\theST@inline, #1)^^Jexcept:^^J
+ _st_.goboom(\the\inputlineno)}%
+\ifST@paused
+ \mbox{(Sage\TeX{} is paused)}%
+\else
+ \begin{NoHyper}\ref{@sageinline\theST@inline}\end{NoHyper}
+ \@ifundefined{r@@sageinline\theST@inline}{\gdef\ST@rerun{x}}{}
\fi
-\ST@wsf{import sagetex}
-\ST@wsf{sagetex.openout('\jobname')}
-\InputIfFileExists{\jobname.sout}{}{}
-\newcommand{\sage}[1]{%
-\ST@wsf{try:}%
-\ST@wsf{ sagetex.inline(\theST@inline, #1)}%
-\ST@wsf{except:}%
-\ST@wsf{ sagetex.goboom(\the\inputlineno)}%
-\begin{NoHyper}\ref{@sagelabel\theST@inline}\end{NoHyper}%
-\@ifundefined{r@@sagelabel\theST@inline}{\gdef\ST@rerun{x}}{}%
\stepcounter{ST@inline}}
-\AtBeginDocument{\provideenvironment{NoHyper}{}{}}
\catcode`\%=12
\newcommand{\percent}{%}
\catcode`\%=14
\newcommand{\ST@plotdir}{sage-plots-for-\jobname.tex}
+\newcommand{\ST@missingfilebox}{\framebox[2cm]{\rule[-1cm]{0cm}{2cm}\textbf{??}}}
\newcommand{\sageplot}[1][width=.75\textwidth]{%
- \@ifnextchar[{\ST@sageplot[#1]}{\ST@sageplot[#1][notprovided]}%]
-}
-\def\ST@sageplot[#1][#2]#3{%
-\ST@wsf{try:}%
-\ST@wsf{ sagetex.initplot('\jobname')}%
-\ST@wsf{ sagetex.plot(\theST@plot, #3, format='#2', epsmagick=\ST@epsim)}%
-\ST@wsf{except:}%
-\ST@wsf{ sagetex.goboom(\the\inputlineno)}%
+ \@ifnextchar[{\ST@sageplot[#1]}{\ST@sageplot[#1][notprovided]}}
+\def\ST@sageplot[#1][#2]#3{\ST@wsf{try:^^J
+ _st_.plot(\theST@plot, format='#2', _p_=#3)^^Jexcept:^^J
+ _st_.goboom(\the\inputlineno)}%
\ifpdf
\ifthenelse{\equal{#2}{notprovided}}%
{\ST@inclgrfx{#1}{pdf}}%
@@ -82,38 +94,39 @@
\else
\ifthenelse{\equal{#2}{notprovided}}%
{\ST@inclgrfx{#1}{eps}}%
- {\ifthenelse{\equal{\ST@epsim}{True}}
- {\ST@inclgrfx{#1}{eps}}%
+ {\@ifundefined{ST@useimagemagick}%
{\IfFileExists{\ST@plotdir/plot-\theST@plot.#2}%
- {\framebox[2cm]{\rule[-1cm]{0cm}{2cm}\textbf{??}}%
+ {\ST@missingfilebox%
\PackageWarning{sagetex}{Graphics file
\ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space
cannot be used with DVI output. Use pdflatex or create an EPS
file. Plot command is}}%
- {\framebox[2cm]{\rule[-1cm]{0cm}{2cm}\textbf{??}}%
+ {\ST@missingfilebox%
\PackageWarning{sagetex}{Graphics file
\ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space
- does not exist}%
- \gdef\ST@rerun{x}}}}%
+ does not exist. Plot command is}%
+ \gdef\ST@rerun{x}}}%
+ {\ST@inclgrfx{#1}{eps}}}%
\fi
\stepcounter{ST@plot}}
-\newcommand{\ST@inclgrfx}[2]{%
+\newcommand{\ST@inclgrfx}[2]{\ifST@paused
+ \fbox{\rule[-1cm]{0cm}{2cm}Sage\TeX{} is paused; no graphic}
+\else
\IfFileExists{\ST@plotdir/plot-\theST@plot.#2}%
{\includegraphics[#1]{\ST@plotdir/plot-\theST@plot.#2}}%
- {\framebox[2cm]{\rule[-1cm]{0cm}{2cm}\textbf{??}}%
+ {\ST@missingfilebox%
\PackageWarning{sagetex}{Graphics file
\ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space does not
- exist}%
- \gdef\ST@rerun{x}}}
+ exist. Plot command is}%
+ \gdef\ST@rerun{x}}
+\fi}
\newcommand{\ST@beginsfbl}{%
- \@bsphack%
- \ST@wsf{sagetex.blockbegin()}%
- \ST@wsf{try:}%
+ \@bsphack\ST@wsf{%
+_st_.blockbegin()^^Jtry:}%
\let\do\@makeother\dospecials\catcode`\^^M\active}
\newcommand{\ST@endsfbl}{%
-\ST@wsf{except:}%
-\ST@wsf{ sagetex.goboom(\the\inputlineno)}%
-\ST@wsf{sagetex.blockend()}}
+\ST@wsf{except:^^J
+ _st_.goboom(\the\inputlineno)^^J_st_.blockend()}}
\newenvironment{sageblock}{\ST@beginsfbl%
\def\verbatim@processline{\ST@wsf{ \the\verbatim@line}%
\hspace{\sagetexindent}\the\verbatim@line\par}%
@@ -127,11 +140,21 @@
\def\verbatim@processline{\hspace{\sagetexindent}\the\verbatim@line\par}%
\verbatim}%
{\endverbatim}
-\AtEndDocument{\ST@wsf{sagetex.endofdoc()}%
+\newcommand{\sagetexpause}{\ifST@paused\relax\else
+\ST@wsf{print 'SageTeX paused on \jobname.tex line \the\inputlineno'^^J"""}
+\ST@pausedtrue
+\fi}
+\newcommand{\sagetexunpause}{\ifST@paused
+\ST@wsf{"""^^Jprint 'SageTeX unpaused on \jobname.tex line \the\inputlineno'}
+\ST@pausedfalse
+\fi}
+\AtEndDocument{\ifST@paused
+\ST@wsf{"""^^Jprint 'SageTeX unpaused at end of \jobname.tex'}
+\fi
+\ST@wsf{_st_.endofdoc()}%
\@ifundefined{ST@rerun}{}%
{\PackageWarningNoLine{sagetex}{There were undefined Sage formulas
-and/or plots}%
-\PackageWarningNoLine{sagetex}{Run Sage on \jobname.sage, and then run
+and/or plots.^^JRun Sage on \jobname.sage, and then run
LaTeX on \jobname.tex again}}}
\endinput
%%