It’s starting to melt!

# Monthly Archives: March 2013

# SageTeX is awesome!

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.