1

Here's the question: how do I get the following to work in SageTeX? The quotes always lead to an error.

\sageplot{plot(cos(x),(x,0,pi),label='$\cos(x)$')}

Double quotes, escaping them, ... nothing seems to work.

1
  • if you press the sagetex tag and please submit a small description of what it does and can it would be nice. In that way people can read of what it actually does. I have no experience in it so have simply created the tag.
    – nickpapior
    Apr 6, 2012 at 17:01

2 Answers 2

1

I don't know enough to tell you what's going on, but this works:

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\pagestyle{empty}
\begin{sagesilent}
G=Graphics()
var('x')
G+=plot(cos(x),(x,0,pi),label='$\cos(x)$')
\end{sagesilent}
\[ \sageplot{G}\] 
\end{document}

Note, to get even more control over the placement of your text label try this:

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\pagestyle{empty}
\begin{sagesilent}
G=Graphics()
H=Graphics()
var('x')
G+=plot(cos(x),(x,0,pi))
H+= text("$\cos(x)$", (3, 1), fontsize=16, color='black')
\end{sagesilent}
\[ \sageplot{G+H}\] 
\end{document}

The people at AskSage will know what's best. Here's output from the first set of code: enter image description here

5
  • Unfortunately, I am "one of the people at AskSage" :) so that's why I came here, thanks for pointing out that one can compute in a sagesilent and then just plot that.
    – kcrisman
    Apr 10, 2012 at 15:12
  • I'm not worried about text placement, the real issue was the quotes not working. There must be something wrong with the parser for sageplot. Incidentally, you should be able to remove the whole extra Graphics() and var incantations and just directly do G = plot..., since x is predefined and all plots begin with empty graphics objects.
    – kcrisman
    Apr 10, 2012 at 15:12
  • In that case, you might be interested in knowing that I didn't get an error when I processed the .sage file resulting from your sageplot using Sage version 4.7. But when I ran LaTeX the second time I ended up getting a garbage label: instead of cos(x) it was $' on one line and oli and part of an "n" on the next line. Strange.
    – DJP
    Apr 11, 2012 at 0:30
  • Mysteriouser and mysteriouser. Because that means the real problem is in the TeXShop engine, maybe - I used %!TEX TS-program = sage and it was during the LaTeX stage that I had problems; it never actually got to Sage. I assumed this was a SageTeX problem but apparently that was mistaken.
    – kcrisman
    Apr 11, 2012 at 5:09
  • I tried TeXShop, Kile, LaTeXilla, Gummi, and TeXmaker and got the some output. When I tried highlighting the PDF where the garbage label was, a lot of text became visible (but crushed together); something like $\mathop{\mathgroup\symoperatorscos} and on the next line dimit. If a screenshot or the PDF file will be helpful in tracking down the problem, let me know.
    – DJP
    Apr 11, 2012 at 23:13
2

It's not the quotes that are the problem here. If you used 'cos(x)', it will work. The real problem is the dollar signs and the \cos: TeX is interpreting stuff before \sageplot. With the dollar signs, here's what ends up in your .sagetex.sage file:

_st_.plot(0, format='notprovided', _p_=plot(cos(x),(x,0,pi),label='$\mathop {\mathgroup \symoperators cos}\nolimits (x)$'))

In this case, SageTeX does exactly what you (unintentionally) asked: it includes the above text as a label. And since TeX does this before \sageplot sees anything, there's nothing SageTex can do.

The above solution with sagesilent is more complicated than necessary, but works because the dollar signs and backslashes inside sagesilent are passed directly to the .sagetex.sage file. Here's a simpler way:

\begin{sagesilent}
  P = plot(cos(x),(x,0,pi),label='$\cos(x)$')
\end{sagesilent}

\sageplot[width=.5\textwidth]{P}
1
  • I'm guessing your finals just ended, sir :) good to hear from the expert!
    – kcrisman
    May 21, 2014 at 13:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .