Ask Your Question
4

How to change _latex_ of log to \ln ?

asked 2011-06-03 08:23:33 +0100

Pedro gravatar image

And also more changes, for example: tan to \tg, sin to \sen etc. It's very common to use this small differences in classes in Portugal.

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
2

answered 2011-06-03 15:30:34 +0100

kcrisman gravatar image

updated 2011-06-03 15:42:57 +0100

You'd have to probably change the code slightly. Of course, in the long run this sort of thing should be fully localizable, but for now it's not done so easily.

sage: sage.functions.trig.Function_tan??
<snip>
GinacFunction.__init__(self, "tan", latex_name=r"\tan")

So if you changed that to latex_name=r"\tg" you might be in business! That would work for the name as well to some extent, though one might have to be careful with making sure one actually got it back to Ginac - the code for sage.symbolic.function.Function should have much info.

You'd have to build your changes, of course.

I'll try to see if one can do this in a running session; one might have to reinitialize it, but the init signature is different for Function_tan than for GinacFunction.

Edit:
No matter how many ways I try to do things like

sage: tan.__setattr__('_latex_name',r"\tg")
sage: tan._latex_name
'\\tg'
sage: latex(tan)
\tan

it doesn't seem to quite work. I just can't get it it initialize this.

edit flag offensive delete link more

Comments

If I am not mistaken, the attribute _latex_name is a cdef attribute, so, not easily overridden. So, it looks like a missing feature to me: There *should* be methods set_name() and set_latex_name(), that can be used to determine how a function is printed on screen resp. how it appears in LaTeX. Shall I open a ticket for it?

Simon King gravatar imageSimon King ( 2011-06-04 04:58:15 +0100 )edit

That's a great idea.

kcrisman gravatar imagekcrisman ( 2011-06-04 09:17:49 +0100 )edit

Related to this: http://ask.sagemath.org/question/538/how-do-i-change-the-default-latex-output-of-a ; And in particular this comment: "...there should be a class _latex_() method to override, I just can't find it at the moment. Maybe someone with more familiarity can chime in. - benjaminfjones (May 09)"

Pedro gravatar imagePedro ( 2011-06-04 10:26:41 +0100 )edit

It is a bit disappointing that the latex name (or the name) are not used when evaluating the function: Using a new method set_name() and set_latex_name(), I changed the names of tan such that it is printed `tg` on screen and `\tg` in latex. But when I did `tan(x)` or `latex(tan(x))`, the new name "tg" was not used. Does someone have an idea how that can be solved?

Simon King gravatar imageSimon King ( 2011-06-04 11:03:56 +0100 )edit

The ticket is #11428. I didn't upload a patch, because I can only make latex(tan) customizable, but then latex(tan(x)) won't change, sadly.

Simon King gravatar imageSimon King ( 2011-06-04 13:54:35 +0100 )edit
1

answered 2011-06-03 13:59:49 +0100

I'm not exactly sure how this is a Sage question but in your LaTeX preamble you can write

\DeclareMathOperator*{\tg}{tan}

so that whenever you write "\tg" in the LaTeX code is will appear as "tan" in the document.

edit flag offensive delete link more

Comments

Thank you for the tex declaration. This is a good solution. The other could be something changing the _latex_ method but I don't know how to do it avoiding changes in latex "preamble". I seems to me that one has to forget \log and then redefine it. \let\tan\undefined \DeclareMathOperator*{\tan}{tg}

Pedro gravatar imagePedro ( 2011-06-03 14:06:43 +0100 )edit

No worries. I think kcrisman's answer is at least starting to head in the direction of what you're looking for.

cswiercz gravatar imagecswiercz ( 2011-06-03 15:44:58 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2011-06-03 08:23:33 +0100

Seen: 1,723 times

Last updated: Jun 03 '11