John H Palmieri
unread,Jul 8, 2009, 2:35:42 PM7/8/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to sage-devel
There is some ugly LaTeX'ing going on in Sage:
In the notebook, try
{{{
%latex
$\sage{type(35))$
}}}
In this case, it uses the string "<type 'sage.rings.integer.Integer'>"
as text, but the < and > signs get converted into an upside-down
exclamation point and question mark.
Or click the "Typeset" button and try
{{{
type(35)
}}}
In this case, jsMath kicks in and tries to typeset "\text{<type
'sage.rings.integer.Integer'>}", but the symbols < and > confuse
jsMath -- it thinks they're part of an html command. As a result,
there is *no* output at all.
One more example, from a Sage doctest:
{{{
sage: R.<x,y>=QQbar[]
sage: latex(-x^2-y+1)
-x^{2} - y + \text{1}
}}}
What is that \text{1} doing there?
Here are my suggested solutions:
for problem 2, jsMath: use \hbox instead of \text. This seems to
work: {{{type(35)}}} prints out the correct string with the Typeset
button checked.
for problem 1, latex'ing type(...): use \texttt (typewriter font).
More precisely, when Sage can't figure out how to LaTeX something, it
converts it to a string and then encloses it in a \text{} command, and
I'm suggesting that we use \texttt{} instead. This is sort of like
verbatim output; in any case, it prints < and > correctly. It does
look different from \text, though. One example in the Sage code looks
like this:
sage: latex(CuspForms(3, 24).hecke_algebra()) # indirect doctest
\mathbf{T}_{\text{Cuspidal subspace of dimension 7 of Modular
Forms space of dimension 9 for Congruence Subgroup Gamma0(3) of weight
24 over Rational Field}}
With my proposed change, the subscript would appear in typewriter font
instead of plain text. I think the way to fix this is to modify the
_latex_ method for Hecke algebras. (I don't think it's going to look
very good with either \text or \texttt, in this example.)
for problem 3, -x^{2} - y + \text{1}: The issue is the same as problem
2: somehow, the element 1 has no _latex_ method, so Sage converts it
to a string and then encloses it in \text{}. I suggest this: if the
object has no conversion to latex, then as before, convert it to a
string. If the string contains only digits and/or letters, then just
use that string (so 'x' prints as an ordinary math-mode italic 'x',
not as an upright \text{x}, and '1' appears as '1': the above
situation would produce '-x^{2} - y + 1'). If the string contains
anything else -- "<", spaces, whatever -- then it gets printed using
\texttt{}, as explained above.
Comments?
John