Cadabra
Computer algebra system for field theory problems
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DisplayTeX.hh
Go to the documentation of this file.
1 
2 #pragma once
3 
4 #include "Props.hh"
5 #include "Storage.hh"
6 #include "DisplayBase.hh"
7 #include <ostream>
8 
9 typedef uint32_t kunichar;
10 
11 namespace cadabra {
12 
20 
21 class DisplayTeX : public DisplayBase {
22  public:
23  DisplayTeX(const Kernel&, const Ex&);
24 
25  protected:
26  virtual bool needs_brackets(Ex::iterator it) override;
27 
28  private:
29  // FIXME: just make this take the multiplier, instead of the node. Then mult can go away.
30  void print_multiplier(std::ostream&, Ex::iterator, int mult=1);
33  void print_parent_rel(std::ostream&, str_node::parent_rel_t, bool first);
34  void print_children(std::ostream&, Ex::iterator, int skip=0);
35 
36  std::string texify(std::string) const;
37 
38  bool print_star=false;
39  bool tight_star=false;
40  bool tight_plus=false;
41  bool utf8_output=false;
42  bool latex_spacing=true;
43  bool latex_linefeeds=true; // to prevent buffer overflows in TeX
44  bool extra_brackets_for_symbols=false; // wrap extra {} around symbols to ensure typesetting safety
45 
47 
54 
55  virtual void dispatch(std::ostream&, Ex::iterator) override;
56 
62 
63  void print_productlike(std::ostream&, Ex::iterator, const std::string& inbetween);
64  void print_sumlike(std::ostream&, Ex::iterator);
65  void print_fraclike(std::ostream&, Ex::iterator);
66  void print_commalike(std::ostream&, Ex::iterator);
67  void print_arrowlike(std::ostream&, Ex::iterator);
68  void print_powlike(std::ostream&, Ex::iterator);
69  void print_intlike(std::ostream&, Ex::iterator);
70  void print_equalitylike(std::ostream&, Ex::iterator);
71  void print_commutator(std::ostream& str, Ex::iterator it, bool comm);
72  void print_components(std::ostream&, Ex::iterator);
73  void print_conditional(std::ostream&, Ex::iterator);
74  void print_relation(std::ostream&, Ex::iterator);
75  void print_indexbracket(std::ostream&, Ex::iterator);
76  void print_wedgeproduct(std::ostream&, Ex::iterator);
77  void print_tableau(std::ostream&, Ex::iterator);
78  void print_ftableau(std::ostream&, Ex::iterator);
79  void print_other(std::ostream& str, Ex::iterator it);
80 
81  bool children_have_brackets(Ex::iterator ch) const;
82 
88 
89  bool reads_as_operator(Ex::iterator obj, Ex::iterator arg) const;
90 
92  std::map<std::string, std::string> symmap;
93 
96  std::set<std::string> curly_bracket_operators;
97 
98 };
99 
100 const char *unichar(kunichar c);
101 
102 }
uint32_t kunichar
Definition: DisplayTeX.hh:9
Basic storage class for symbolic mathemematical expressions.
Definition: Storage.hh:130
bool children_have_brackets(Ex::iterator ch) const
Definition: DisplayTeX.cc:698
bool tight_star
Definition: DisplayTeX.hh:39
void print_children(std::ostream &, Ex::iterator, int skip=0)
Definition: DisplayTeX.cc:220
virtual bool needs_brackets(Ex::iterator it) override
Determine if a node needs extra brackets around it.
Definition: DisplayTeX.cc:29
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 ...
Definition: DisplayTeX.cc:354
void print_equalitylike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:595
void print_opening_bracket(std::ostream &, str_node::bracket_t, str_node::parent_rel_t)
Definition: DisplayTeX.cc:303
void print_closing_bracket(std::ostream &, str_node::bracket_t, str_node::parent_rel_t)
Definition: DisplayTeX.cc:319
void print_sumlike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:495
void print_indexbracket(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:686
void print_intlike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:544
bool print_star
Definition: DisplayTeX.hh:38
Base class for all display classes.
Definition: DisplayBase.hh:18
void print_wedgeproduct(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:392
void print_tableau(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:141
uint32_t kunichar
Definition: DisplayMMA.hh:9
bool extra_brackets_for_symbols
Definition: DisplayTeX.hh:44
std::set< std::string > curly_bracket_operators
List of operators which need all arguments fed with curly brackets, not round ones (e...
Definition: DisplayTeX.hh:96
void print_commutator(std::ostream &str, Ex::iterator it, bool comm)
Definition: DisplayTeX.cc:606
bool tight_plus
Definition: DisplayTeX.hh:40
const char * unichar(kunichar c)
Definition: DisplayTeX.cc:747
void print_components(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:625
bool latex_spacing
Definition: DisplayTeX.hh:42
void print_other(std::ostream &str, Ex::iterator it)
Definition: DisplayTeX.cc:99
bool reads_as_operator(Ex::iterator obj, Ex::iterator arg) const
Determine whether the indicated object 'obj', when acting on the single argument 'arg', reads as an operator, and therefore 'arg' does not need to be wrapped in brackets.
Definition: DisplayTeX.cc:77
DisplayTeX(const Kernel &, const Ex &)
Definition: DisplayTeX.cc:16
bool latex_linefeeds
Definition: DisplayTeX.hh:43
Class to handle display of expressions using LaTeX notation.
Definition: DisplayTeX.hh:21
int bracket_level
Definition: DisplayTeX.hh:46
void print_relation(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:676
void print_parent_rel(std::ostream &, str_node::parent_rel_t, bool first)
Definition: DisplayTeX.cc:335
void print_ftableau(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:167
void print_arrowlike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:414
void print_commalike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:376
void print_fraclike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:423
parent_rel_t
Child nodes are related to their parent node by a so-called parent relation, which can be one of thes...
Definition: Storage.hh:61
void print_powlike(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:524
Definition: Kernel.hh:15
std::string texify(std::string) const
Definition: DisplayTeX.cc:206
bracket_t
Definition: Storage.hh:57
std::map< std::string, std::string > symmap
Map from Cadabra symbols to LaTeX symbols (for some typographic cleanup).
Definition: DisplayTeX.hh:92
bool utf8_output
Definition: DisplayTeX.hh:41
void print_multiplier(std::ostream &, Ex::iterator, int mult=1)
Definition: DisplayTeX.cc:284
void print_productlike(std::ostream &, Ex::iterator, const std::string &inbetween)
Printing members for various standard constructions, e.g.
Definition: DisplayTeX.cc:444
void print_conditional(std::ostream &, Ex::iterator)
Definition: DisplayTeX.cc:667