Opened 8 years ago

Last modified 3 years ago

#11428 new enhancement

Customizable latex for functions

Reported by: SimonKing Owned by: burcin
Priority: major Milestone: sage-6.4
Component: symbolics Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

There should be a way to customize how a function is printed and how it is translated into Latex, as requested on ask-sage.

I suggest, as a first step, to add methods set_name() and set_latex_name() that change the value of the cdefined attributes _name used for printing and _latex_name used for translation to latex. Then, the following would work:

sage: tan.set_name('tg')
sage: tan
tg
sage: tan.set_latex_name(r'\tg')
sage: latex(tan)
\tg

However, that can really only be the first step. Because, when I did so, I still got

sage: tan(x)
tan(x)
sage: latex(tan(x))
\tan\left(x\right)

Hence, in addition to that, the given latex name should be propagated to expressions.

Attachments (1)

trac11428_customize_latex_for_functions.patch (1.1 KB) - added by SimonKing 8 years ago.
Preliminary patch: Change latex/repr of a function. But the custom names are not propagated.

Download all attachments as: .zip

Change History (9)

comment:1 Changed 8 years ago by kcrisman

Please upload that preliminary patch so others can work with it!

The SR stuff does come from Ginac, as I thought I remembered. Maybe Burcin will have a brief comment to put us on the right track for that; I don't quite understand how it works, though I think I once nearly figured it out :)

Changed 8 years ago by SimonKing

Preliminary patch: Change latex/repr of a function. But the custom names are not propagated.

comment:2 Changed 8 years ago by SimonKing

Patch's up.

With it, this works

sage: tan.set_latex_name(r'\tg')
sage: latex(tan)
\tg
sage: tan.set_name('tg')
sage: tan
tg

but this doesn't

sage: tan(x)
tan(x)
sage: latex(tan(x))
\tan\left(x\right)

comment:3 Changed 6 years ago by kcrisman

For reference for anyone implementing this correctly, in this thread on sage-support, Burcin recommends

It needs to go through the 
registry of functions stored in Pynac and update the name or the 
printing functions there.

comment:4 Changed 6 years ago by jdemeyer

  • Milestone changed from sage-5.11 to sage-5.12

comment:5 Changed 5 years ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:6 Changed 5 years ago by vbraun_spam

  • Milestone changed from sage-6.2 to sage-6.3

comment:7 Changed 5 years ago by vbraun_spam

  • Milestone changed from sage-6.3 to sage-6.4

comment:8 Changed 3 years ago by rws

See also #20888

Last edited 3 years ago by rws (previous) (diff)
Note: See TracTickets for help on using tickets.