Created
September 17, 2020 06:34
-
-
Save PHPirates/306862d40d6869e1effb6e303557123b to your computer and use it in GitHub Desktop.
sagetex.sty SageMath 9.1 sagetex 3.5-1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%% | |
%% This is file `sagetex.sty', | |
%% generated with the docstrip utility. | |
%% | |
%% The original source files were: | |
%% | |
%% sagetex.dtx (with options: `latex') | |
%% py-and-sty.dtx (with options: `latex') | |
%% | |
%% This is a generated file. It is part of the SageTeX package. | |
%% | |
%% Copyright (C) 2008--2015 by Dan Drake <[email protected]> | |
%% | |
%% 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 | |
%% Free Software Foundation, either version 2 of the License, or (at your | |
%% option) any later version. | |
%% | |
%% 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. | |
%% | |
%% You should have received a copy of the GNU General Public License along | |
%% with this program. If not, see <http://www.gnu.org/licenses/>. | |
%% | |
\NeedsTeXFormat{LaTeX2e} | |
\ProvidesPackage{../lib/sagetex} | |
[2020/08/12 v3.5 embedding Sage into LaTeX documents] | |
\newcommand{\ST@ver}{2020/08/12 v3.5} | |
\RequirePackage{verbatim} | |
\RequirePackage{fancyvrb} | |
\RequirePackage{listings} | |
\RequirePackage{color} | |
\lstdefinelanguage{Sage}[]{Python} | |
{morekeywords={False,sage,True},sensitive=true} | |
\lstdefinelanguage{SageOutput}[]{} | |
{morekeywords={False,True},sensitive=true} | |
\lstdefinestyle{DefaultSageInputOutput}{ | |
nolol, | |
identifierstyle=, | |
name=sagecommandline, | |
xleftmargin=5pt, | |
numbersep=5pt, | |
aboveskip=0pt, | |
belowskip=0pt, | |
breaklines=true, | |
numberstyle=\footnotesize, | |
numbers=right | |
} | |
\lstdefinestyle{DefaultSageInput}{ | |
language=Sage, | |
style=DefaultSageInputOutput, | |
basicstyle={\ttfamily\bfseries}, | |
commentstyle={\ttfamily\color{dgreencolor}}, | |
keywordstyle={\ttfamily\color{dbluecolor}\bfseries}, | |
stringstyle={\ttfamily\color{dgraycolor}\bfseries}, | |
} | |
\lstdefinestyle{DefaultSageOutput}{ | |
language=SageOutput, | |
style=DefaultSageInputOutput, | |
basicstyle={\ttfamily}, | |
commentstyle={\ttfamily\color{dgreencolor}}, | |
keywordstyle={\ttfamily\color{dbluecolor}}, | |
stringstyle={\ttfamily\color{dgraycolor}}, | |
} | |
\lstdefinestyle{SageInput}{ | |
style=DefaultSageInput, | |
} | |
\lstdefinestyle{SageOutput}{ | |
style=DefaultSageOutput, | |
} | |
\definecolor{dbluecolor}{rgb}{0.01,0.02,0.7} | |
\definecolor{dgreencolor}{rgb}{0.2,0.4,0.0} | |
\definecolor{dgraycolor}{rgb}{0.30,0.3,0.30} | |
\RequirePackage{graphicx} | |
\RequirePackage{makecmds} | |
\RequirePackage{ifpdf} | |
\RequirePackage{ifthen} | |
\IfFileExists{ifxetex.sty}{ | |
\RequirePackage{ifxetex} | |
}{ | |
\newboolean{xetex} | |
\setboolean{xetex}{false}} | |
\newcounter{ST@inline} | |
\newcounter{ST@plot} | |
\newcounter{ST@cmdline} | |
\setcounter{ST@inline}{0} | |
\setcounter{ST@plot}{0} | |
\setcounter{ST@cmdline}{0} | |
\newlength{\sagetexindent} | |
\setlength{\sagetexindent}{5ex} | |
\newif\ifST@paused | |
\ST@pausedfalse | |
\AtBeginDocument{\@ifundefined{ST@final}{% | |
\newwrite\ST@sf% | |
\immediate\openout\ST@sf=\jobname.sagetex.sage% | |
\newcommand{\ST@wsf}[1]{\immediate\write\ST@sf{#1}}% | |
\ST@wsf{% | |
# -*- encoding: utf-8 -*-^^J% | |
# This file (\jobname.sagetex.sage) was *autogenerated* from \jobname.tex with | |
sagetex.sty version \ST@ver.^^J% | |
import sagetex^^J% | |
_st_ = sagetex.SageTeXProcessor('\jobname', version='\ST@ver', version_check=\ST@versioncheck)}}% | |
{\newcommand{\ST@wsf}[1]{\relax}}} | |
\newcommand{\ST@dodfsetup}{% | |
\@ifundefined{ST@diddfsetup}{% | |
\newwrite\ST@df% | |
\immediate\openout\ST@df=\jobname_doctest.sage% | |
\immediate\write\ST@df{r"""^^J% | |
This file was *autogenerated* from \jobname.tex with sagetex.sty^^J% | |
version \ST@ver. It contains the contents of all the^^J% | |
sageexample environments from \jobname.tex. You should be able to^^J% | |
doctest this file with "sage -t \jobname_doctest.sage".^^J% | |
^^J% | |
It is always safe to delete this file; it is not used in typesetting your^^J% | |
document.^^J}% | |
\AtEndDocument{\immediate\write\ST@df{"""}}% | |
\gdef\ST@diddfsetup{x}}% | |
{\relax}} | |
\newcommand{\ST@wdf}[1]{\immediate\write\ST@df{#1}} | |
\DeclareOption{final}{% | |
\newcommand{\ST@final}{x}% | |
\IfFileExists{\jobname.sagetex.sout}{}{\AtEndDocument{\PackageWarningNoLine{sagetex}% | |
{`final' option provided, but \jobname.sagetex.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}}{}}} | |
\newcommand{\ST@versioncheck}{True} | |
\DeclareOption{noversioncheck}{% | |
\renewcommand{\ST@versioncheck}{False}} | |
\ProcessOptions\relax | |
\InputIfFileExists{\jobname.sagetex.sout}{} | |
{\typeout{No file \jobname.sagetex.sout.}} | |
\AtBeginDocument{\provideenvironment{NoHyper}{}{}} | |
\newcommand{\ST@sage}[1]{\ST@wsf{% | |
try:^^J | |
_st_.current_tex_line = \the\inputlineno^^J | |
_st_.inline(\theST@inline, #1)^^J% | |
except:^^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 | |
\stepcounter{ST@inline}} | |
\newcommand{\sage}[1]{\ST@sage{latex(#1)}} | |
\newcommand{\sagestr}[1]{\ST@sage{#1}} | |
\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][]{% | |
\@ifnextchar[{\ST@sageplot[#1]}{\ST@sageplot[#1][notprovided]}} | |
\def\ST@sageplot[#1][#2]#3{\ST@wsf{try:^^J | |
_st_.current_tex_line = \the\inputlineno^^J | |
_st_.plot(\theST@plot, format='#2', _p_=#3)^^Jexcept:^^J | |
_st_.goboom(\the\inputlineno)}% | |
\ifthenelse{\boolean{pdf} \or \boolean{xetex}}{ | |
\ifthenelse{\equal{#2}{notprovided}}% | |
{\ST@inclgrfx{#1}{pdf}}% | |
{\ST@inclgrfx{#1}{#2}}} | |
{ \ifthenelse{\equal{#2}{notprovided}}% | |
{\ST@inclgrfx{#1}{eps}}% | |
{\@ifundefined{ST@useimagemagick}% | |
{\IfFileExists{\ST@plotdir/plot-\theST@plot.#2}% | |
{\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}}% | |
{\ST@missingfilebox% | |
\PackageWarning{sagetex}{Graphics file | |
\ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space | |
does not exist. Plot command is}% | |
\gdef\ST@rerun{x}}}% | |
{\ST@inclgrfx{#1}{eps}}}} | |
\stepcounter{ST@plot}} | |
\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}}% | |
{\IfFileExists{\ST@plotdir/plot-\[email protected]}% | |
{\ifpdf | |
\ST@inclgrfx{#1}{png} | |
\else | |
\PackageWarning{sagetex}{Graphics file | |
\ST@plotdir/plot-\[email protected] on page \thepage\space not | |
supported; try using pdflatex. Plot command is}% | |
\fi}% | |
{\ST@missingfilebox% | |
\PackageWarning{sagetex}{Graphics file | |
\ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space does not | |
exist. Plot command is}% | |
\gdef\ST@rerun{x}}} | |
\fi} | |
\newcommand{\ST@beginsfbl}{% | |
\@bsphack\ST@wsf{% | |
_st_.current_tex_line = \the\inputlineno^^J% | |
_st_.blockbegin()^^Jtry:}% | |
\let\do\@makeother\dospecials\catcode`\^^M\active} | |
\newcommand{\ST@endsfbl}{% | |
\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}% | |
\verbatim}% | |
{\ST@endsfbl\endverbatim} | |
\newenvironment{sagesilent}{\ST@beginsfbl% | |
\def\verbatim@processline{\ST@wsf{ \the\verbatim@line}}% | |
\verbatim@start}% | |
{\ST@endsfbl\@esphack} | |
\newenvironment{sageverbatim}{% | |
\def\verbatim@processline{\hspace{\sagetexindent}\the\verbatim@line\par}% | |
\verbatim}% | |
{\endverbatim} | |
\newcommand{\sageexampleincludetextoutput}{False} | |
\newenvironment{sageexample}{% | |
\ST@wsf{% | |
try:^^J | |
_st_.current_tex_line = \the\inputlineno^^J | |
_st_.doctest(\theST@inline, r"""}% | |
\ST@dodfsetup% | |
\ST@wdf{Sage example, line \the\inputlineno::^^J}% | |
\begingroup% | |
\@bsphack% | |
\let\do\@makeother\dospecials% | |
\catcode`\^^M\active% | |
\def\verbatim@processline{% | |
\ST@wsf{\the\verbatim@line}% | |
\ST@wdf{\the\verbatim@line}% | |
}% | |
\verbatim@start% | |
} | |
{ | |
\@esphack% | |
\endgroup% | |
\ST@wsf{% | |
""", globals(), locals(), \sageexampleincludetextoutput)^^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@wdf{}% | |
\stepcounter{ST@inline}} | |
\newcommand{\sagecommandlinetextoutput}{True} | |
\newlength{\sagecommandlineskip} | |
\setlength{\sagecommandlineskip}{8pt} | |
\newenvironment{sagecommandline}{% | |
\ST@wsf{% | |
try:^^J | |
_st_.current_tex_line = \the\inputlineno^^J | |
_st_.commandline(\theST@cmdline, r"""}% | |
\ST@dodfsetup% | |
\ST@wdf{Sage commandline, line \the\inputlineno::^^J}% | |
\begingroup% | |
\@bsphack% | |
\let\do\@makeother\dospecials% | |
\catcode`\^^M\active% | |
\def\verbatim@processline{% | |
\ST@wsf{\the\verbatim@line}% | |
\ST@wdf{\the\verbatim@line}% | |
}% | |
\verbatim@start% | |
} | |
{ | |
\@esphack% | |
\endgroup% | |
\ST@wsf{% | |
""", globals(), locals(), \sagecommandlinetextoutput)^^Jexcept:^^J | |
_st_.goboom(\the\inputlineno)}% | |
\ifST@paused% | |
\mbox{(Sage\TeX{} is paused)}% | |
\else% | |
\begin{NoHyper}\ref{@sagecmdline\theST@cmdline}\end{NoHyper}% | |
\@ifundefined{r@@sagecmdline\theST@cmdline}{\gdef\ST@rerun{x}}{}% | |
\fi% | |
\ST@wdf{}% | |
\stepcounter{ST@cmdline}} | |
\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}{}% | |
{\typeout{*********************************************************************} | |
\PackageWarningNoLine{sagetex}{there were undefined Sage formulas and/or | |
plots.^^JRun Sage on \jobname.sagetex.sage, and then run LaTeX on \jobname.tex | |
again}} | |
\typeout{*********************************************************************}} | |
\endinput | |
%% | |
%% End of file `sagetex.sty'. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment