id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
5711 [with patch, positive review] Enhanced Typesetting of Symbolic Functions gmhossain cwitty "Here is a patch that enhances current typesetting capability
of symbolic functions within sage.
This issue has been under a long discussion in the thread
http://groups.google.com/group/sage-devel/browse_thread/thread/a51f269f057d8223/536b4ef2493bb20c
'''Note: Switch to new symbolics has caused some functions to be changed'''
Main enhancements are:
(1) Symbolics functions with name in Greek letters (with possible
suffixes), are typeset nicely in LaTeX.
Ex: psi(x) => \psi(x)
f0(x) => f_0(x)
(2) Functions such as ""diff"", ""integrate"", ""limit"", ""conjugate"",
""laplace"", ""inverse_laplace"" are now typeset within Sage itself.
Ex: integrate(f(x),x) => \int f(x) dx
(3) Default (fall-back) typesetting for unknown functions (as
in Maxima).
Ex: myfn(x) => {\it myfn}(x)
(4) '''[ This is diasbled in new symbolics. However, equivalent feature will be available in new symbolics ]'''
Allows users to define their own/custom LaTeX expression
for any symbolic functions via a new method ""set_latex()"" for
the class SymbolicFunctionEvaluation.
Ex:
{{{
var('t');
hubble(t) = function('hubble',t)
hubble(t).set_latex('\\mathcal{H}')
#To reset custom LaTeX expression
hubble(t).set_latex()
}}}
(5) '''[ This has been disabled in new Symbolics as SymbolicVariable class has changed ]'''
If the arguments of a symbolic function are all symbolic
variables then typesetting will avoid using \left(, \right).
Ex: Phi(x,y) => \Phi(x, y) (if x,y are symbolic vars)
(6) '''[New in the rebased patch]''' New symbolics uses ""D""
format for derivatives instead of old ""diff"" format.
The rebased patch typesets symbolic derivatives in old ""diff"" format by default as in this format typeset version looks similar to those found in text books, journals.
However see this thread for known limitations of current conversion between these two formats
http://groups.google.com/group/sage-devel/browse_thread/thread/7479c3eeb96348a2
One can switch between two typesetting format as follows
{{{
f(x) = function('f',x)
g = diff(f(x),x)
latex(g)
\frac{d f\left(x\right)}{d x}
# Switch to D format
sage.symbolic.pynac.typeset_d_as_diff=False
latex(g)
D[0]f\left(x\right)
}}}
(7) '''[New in the rebased patch]''' The rebased patch resolves
the issue
http://trac.sagemath.org/sage_trac/ticket/6268
'''[Update: in v3 (4.0.2) ]'''
As suggested by Burcin in his referee report, following changes are made in the patch:
'''(1)''' Typesetting of ""diff"" is moved to a new ticket #6344
'''(2)''' Four helper functions _limit_latex_(), _integrate_latex_(), _laplace_latex_() and _inverse_laplace_latex_() have been moved to calculus/calculus.py. Then they are hooked to the instances of SFunction class by using dummy functions for better integration with the new symbolics.
'''(3)''' Four earlier functions latex_symbolic_function(), _symbolic_function_default_latex_(), _args_latex_(), _conjugate_latex() are removed.
'''(4)''' latex_function_name() is also replaced as the updated latex_variable_name() is augmented to take a new flag ""is_fname"". This will ensure that same typesetting convention is followed for both known functions such as \sin (:= {\rm sin}), \cos (:= {\rm cos}) and user defined function names such as ""mysin"" (=> {\rm mysin}).
" enhancement closed major sage-4.1 symbolics fixed Enhance Typesetting, LaTeX, Symbolic Functions burcin jason jhpalmieri schymans sage-4.1.alpha0 Golam Mortuza Hossain Burcin Erocal