For a long time, I have been a user of the math software system Sage, and for a longer time, I have been a user of LaTeX. So, it’s with some embarrassment that I report that I only recently discovered the awesomeness that is SageTeX, a LaTeX package that allows your LaTeX document to run Sage code and include the results.

I often use Sage to create plots for use in my lectures or printed class materials. Previously, my workflow was as follows:

- Create the graphic by running commands in the Sage notebook.
- Use the
`save`

command to save the graphic as a PDF, usually with a filename based on my LaTeX source file’s name (e.g.`m160-sp13-mid2-practice-1.pdf`

, for use in the LaTeX document with source file`m160-sp13-mid2-practice.tex`

). - Save the file in the directory where my LaTeX source file lives.
`\includegraphics`

, FTW!

Like most teachers, every time I teach a course I’ve taught before, I like
to reuse old materials, often after improving them or adjusting them to suit the
new class. Therefore, it’s good to record the exact Sage commands
somewhere, as opposed to just keeping the graphic file, in case I want to modify
the graphic. One way you can do this is to paste the Sage commands as a comment
in the LaTeX file. This has the advantage of allowing future tweaks to be
recorded in your version control system. (And you *really should* be using a
version control system, so that way you won’t be afraid to make changes to
your document.) Unfortunately, modifications then mean a lot of
copy-and-pasting: you have to modify the code in the Sage notebook, and then
copy-and-paste the modifications to the comments in the LaTeX document, or
vice-versa. And then you have to save another version of your graphic from the
browser. What a headache!

SageTeX makes this a lot easier. When I want to put a Sage plot in my document, I can put the Sage commands right in the document:

`\begin{sagesilent}`

`var('x,y')`

`gfx = implicit_plot((x + 1)*(x^2 + y^2) == 3*x^2, (x, -2, 2),(y, -2, 2), axes=true, frame=false)`

`gfx = gfx + list_plot([(1/2, -1/2)], size=50)`

`save(gfx, "m160-sp13-mid2-practice-1.pdf", figsize=[3, 3])`

`\end{sagesilent}`

`\item (15 points)`

`Consider the curve with the equation`

`$(x + 1)(x^2 + y^2) = 3x^2$ (shown below).`

`Use implicit differentation to find $\tfrac{dy}{dx}$,`

`and then find an equation for the tangent line`

`of the curve at the point`

`$\left(\tfrac{1}{2},-\tfrac{1}{2}\right)$.\\`

`\includegraphics[width=3 in]{m160-sp13-mid2-practice-1.pdf}`

When you compile your document with `pdflatex`

, it creates a Sage script file
titled (in this case) `m160-sp13-mid2-practice.sagetex.py`

. Compiling this with
Sage will create (or update) the file `m160-sp13-mid2-practice-1.pdf`

, which you
can include (or update) by running `pdflatex`

again!

That’s pretty awesome.