What is the function for "%latex" on a notebook cell ?

i like this post (click again to cancel)
0
i dont like this post (click again to cancel)

In a notebook cell one can write:

%latex

Hello

\ [

x=f(x)

\ ]

and an image appear with perfect math notation. (not jsmath)

What is the sage command that does the same receiving a string ? Something like latexrender(r"Hello \ [x=f(x)\ ]")

asked Jan 11 '11

Pedro Cruz gravatar image Pedro Cruz
115 1 6 15
http://www.mat.ua.pt/jped...

4 Answers:

i like this answer (click again to cancel)
5
i dont like this answer (click again to cancel) Pedro Cruz has selected this answer as correct

In the notebook, I believe that executing a %latex cell is equivalent to the command

Latex().eval("string", globals=globals)

For example,

Latex().eval(r"""Hello

\[ 
x=f(x)
\]

Goodbye""", globals=globals)
link

posted Jan 11 '11

John Palmieri gravatar image John Palmieri flag of United States
2605 8 23 57
http://www.math.washingto...
You win. :^) DSM (Jan 11 '11)
Well, not quite - because he needed a *raw* string, and because Latex() is not in the default namespace. But that's enough for me to open a ticket - see http://trac.sagemath.org/sage_trac/ticket/10592kcrisman (Jan 11 '11)
Latex() is in the default name space for the notebook. You can also replace "Latex()" with "latex" (note the lack of parentheses in the second one). I also don't understand your comment about the raw string. Running "latex.eval(...)" from the command line seems to produce png files containing the image, rather than popping up a window with a picture. John Palmieri (Jan 11 '11)
Okay, that is good to know. The issue about the raw string is just that in the command line one would have to be careful to add white space for LaTeX, and/or carriage returns, which I don't know quite how to do without actual carriage returns - does \n or \r work? Yes, producing the png makes sense - what does latex.show(...) do? Pop it up? That behavior should be available, at any rate. kcrisman (Jan 11 '11)
i like this answer (click again to cancel)
1
i dont like this answer (click again to cancel)

I don't know that there is one. But from the console, you can use the text command, and wrap the latex in $:

text("Behold the power of TeX: $\\frac{x^2}{y^3} = 7$", (0, 0), axes=False,fontsize=20)

So you can trivially write a latexrender command yourself:

def latexrender(s):
    pic = text("$" + s.replace('$','\$') + "$",(0,0),axes=False, color='black',fontsize=20)
    pic.show()

latexrender(r"17 + \sum_{i=2}^{q} \, k^2 = 29383")

Adding extra features like allowing you to specify the properties via **kwargs is left as an exercise for the reader. I should note though that the above uses matplotlib's TeX implementation, not any system verson, AFAIK.

Let's see if I can figure out how to do this from the notebook.. okay, the above still works there. I'll see if I can figure out how to get LaTeX itself called (although I should say that the matplotlib mathtext has worked pretty well for me).

After a little thought, something like the following should get the job done:

import matplotlib
matplotlib.rcParams['text.usetex']=True
def latexrender(s):
    pic = text("$" + s.replace('$','\$') + "$",(0,0),axes=False, color='black',fontsize=20)
    pic.show()

latexrender(r"17 + \displaystyle\sum\limits_{i=2}^q \, k^2 = 29383")
link

posted Jan 11 '11

DSM gravatar image DSM flag of Canada
4802 12 61 103

updated Jan 11 '11

i like this answer (click again to cancel)
1
i dont like this answer (click again to cancel)

Percent directives in the notebook literally call other systems directly. (So you need $\LaTeX$ in your PATH to do this, of course, which I don't.)

So there should be a way to use the stuff in sage.misc.latex to do this. In theory,

sage: show(latex('mystring'))

should work for anything. Certainly it will work if you put Sage objects and numbers in it, but with strings I think it's tricky - latex() wraps them with \texttt{} in general, while %latex wraps LATEX_HEADER around things - see

sage: sage.misc.latex.Latex??

or the whole source for sage.misc.latex.

So that's not a full answer, but maybe it will lead to a full answer. I just don't understand well enough how the notebook calls other systems, otherwise I'd look there and give a complete answer.

link

posted Jan 11 '11

kcrisman gravatar image kcrisman
6639 13 66 150
i like this answer (click again to cancel)
0
i dont like this answer (click again to cancel)

If you just want to typeset some latex using jsmath, use for example:

html('$\pi$')
link

posted Jan 17 '12

pang gravatar image pang
167 3 10
http://www.uam.es/persona...

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[hide preview]

Question tools

Tags:

Stats:

Asked: Jan 11 '11

Seen: 468 times

Last updated: Jan 17 '12

powered by ASKBOT version 0.7.22
Copyright Sage, 2010. Some rights reserved under creative commons license.