Cadabra
Computer algebra system for field theory problems
|
Class to display expressions in a format that Mathematica can parse.
Will throw an exception if a Cadabra Ex object cannot be understood by Mathematica. Can also convert expressions back to Cadabra notation.
#include <DisplayMMA.hh>
Public Member Functions | |
DisplayMMA (const Kernel &, const Ex &, bool use_unicode=true) | |
void | import (Ex &) |
Rewrite the output of mathematica back into a notation used by Cadabra. More... | |
std::string | preparse_import (const std::string &) |
Public Member Functions inherited from cadabra::DisplayBase | |
DisplayBase (const Kernel &, const Ex &) | |
void | output (std::ostream &) |
void | output (std::ostream &, Ex::iterator) |
Protected Member Functions | |
virtual bool | needs_brackets (Ex::iterator it) override |
Determine if a node needs extra brackets around it. More... | |
Protected Attributes | |
bool | use_unicode |
Protected Attributes inherited from cadabra::DisplayBase | |
const Ex & | tree |
const Kernel & | kernel |
Private Member Functions | |
void | print_multiplier (std::ostream &, Ex::iterator) |
Output the expression to a mathematica-readable form. More... | |
void | print_opening_bracket (std::ostream &, str_node::bracket_t) |
void | print_closing_bracket (std::ostream &, str_node::bracket_t) |
void | print_parent_rel (std::ostream &, str_node::parent_rel_t, bool first) |
void | print_children (std::ostream &, Ex::iterator, int skip=0) |
virtual void | dispatch (std::ostream &, Ex::iterator) override |
For every object encountered, dispatch will figure out the most appropriate way to convert it into a LaTeX expression. More... | |
void | print_productlike (std::ostream &, Ex::iterator, const std::string &inbetween) |
Printing members for various standard constructions, e.g. More... | |
void | print_sumlike (std::ostream &, Ex::iterator) |
void | print_fraclike (std::ostream &, Ex::iterator) |
void | print_commalike (std::ostream &, Ex::iterator) |
void | print_arrowlike (std::ostream &, Ex::iterator) |
void | print_powlike (std::ostream &, Ex::iterator) |
void | print_intlike (std::ostream &, Ex::iterator) |
void | print_equalitylike (std::ostream &, Ex::iterator) |
void | print_components (std::ostream &, Ex::iterator) |
void | print_partial (std::ostream &str, Ex::iterator it) |
void | print_matrix (std::ostream &str, Ex::iterator it) |
void | print_other (std::ostream &str, Ex::iterator it) |
bool | children_have_brackets (Ex::iterator ch) const |
Private Attributes | |
std::map< std::string, std::string > | symmap |
Map from Cadabra symbols to Mathematica symbols. More... | |
std::multimap< std::string, std::string > | regex_map |
std::map< nset_t::iterator, Ex, nset_it_less > | depsyms |
Map from symbols which have had dependencies added to an expression containing these dependencies. More... | |
|
private |
|
overrideprivatevirtual |
For every object encountered, dispatch will figure out the most appropriate way to convert it into a LaTeX expression.
This may be done by simply looking at the object's name (e.g. \prod
will print as a product) but may also involve looking up properties and deciding on the best course of action based on the attached properties.
Implements cadabra::DisplayBase.
void DisplayMMA::import | ( | Ex & | ex | ) |
Rewrite the output of mathematica back into a notation used by Cadabra.
This in particular involves converting 'Sin' and friends to \sin
and so on, as well as converting all the greek symbols. Currently only acts node-by-node, does not do anything complicated with trees.
|
overrideprotectedvirtual |
Determine if a node needs extra brackets around it.
Uses context from the parent node if necessary. Has to be implemented in a derived class, because the answer depends on the printing method (e.g. (a+b)/c
needs brackets when printed like this, but does not need brackets when printed as \frac{a+b}{c}
).
Implements cadabra::DisplayBase.
std::string DisplayMMA::preparse_import | ( | const std::string & | in | ) |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Output the expression to a mathematica-readable form.
For symbols which cannot be parsed by mathematica, this can convert to an alternative, Such rewrites can then be undone by the 'import' member above.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Printing members for various standard constructions, e.g.
print as a list, or as a decorated symbol with super/subscripts etc. The names reflect the structure of the output, not necessarily the meaning or name of the object that is being printed.
|
private |
|
private |
Map from symbols which have had dependencies added to an expression containing these dependencies.
|
private |
|
private |
Map from Cadabra symbols to Mathematica symbols.
This is a bit tricky because MathLink does not pass \[Alpha]
and friends transparently. So we feed it UTF8 α and so on, but then we get \[Alpha]
back, and that needs to be regex-replaced before we feed it to our parser as ours does not swallow that kind of bracketing.
|
protected |