Skip to content

Instantly share code, notes, and snippets.

@PHPirates
Created September 17, 2020 06:34
Show Gist options
  • Save PHPirates/306862d40d6869e1effb6e303557123b to your computer and use it in GitHub Desktop.
Save PHPirates/306862d40d6869e1effb6e303557123b to your computer and use it in GitHub Desktop.
sagetex.sty SageMath 9.1 sagetex 3.5-1
%%
%% 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