Cadabra
Computer algebra system for field theory problems
Loading...
Searching...
No Matches
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
9typedef uint32_t kunichar;
10
11namespace 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_dot(std::ostream& str, Ex::iterator it);
80 void print_dots(std::ostream& str, Ex::iterator it);
81 void print_other(std::ostream& str, Ex::iterator it);
82
83 bool children_have_brackets(Ex::iterator ch) const;
84
88 bool handle_unprintable_wildcards(std::ostream&, Ex::iterator it) const;
89
95
96 bool reads_as_operator(Ex::iterator obj, Ex::iterator arg) const;
97
99 std::map<std::string, std::string> symmap;
100
103 std::set<std::string> curly_bracket_operators;
104
105 };
106
107 const char *unichar(kunichar c);
108
109 }
uint32_t kunichar
Definition DisplayMMA.hh:9
uint32_t kunichar
Definition DisplayTeX.hh:9
Base class for all display classes.
Definition DisplayBase.hh:19
Class to handle display of expressions using LaTeX notation.
Definition DisplayTeX.hh:21
void print_equalitylike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:874
void print_sumlike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:694
bool extra_brackets_for_symbols
Definition DisplayTeX.hh:44
void print_dots(std::ostream &str, Ex::iterator it)
Definition DisplayTeX.cc:906
void print_intlike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:823
void print_multiplier(std::ostream &, Ex::iterator, int mult=1)
Definition DisplayTeX.cc:365
void print_relation(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:969
int bracket_level
Definition DisplayTeX.hh:46
virtual bool needs_brackets(Ex::iterator it) override
Determine if a node needs extra brackets around it.
Definition DisplayTeX.cc:41
bool handle_unprintable_wildcards(std::ostream &, Ex::iterator it) const
Handle unprintable constructions like \pow{#}, which need to print verbatim.
Definition DisplayTeX.cc:747
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:462
bool latex_spacing
Definition DisplayTeX.hh:42
void print_commutator(std::ostream &str, Ex::iterator it, bool comm)
Definition DisplayTeX.cc:887
void print_opening_bracket(std::ostream &, str_node::bracket_t, str_node::parent_rel_t)
Definition DisplayTeX.cc:384
void print_wedgeproduct(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:505
std::map< std::string, std::string > symmap
Map from Cadabra symbols to LaTeX symbols (for some typographic cleanup).
Definition DisplayTeX.hh:99
void print_productlike(std::ostream &, Ex::iterator, const std::string &inbetween)
Printing members for various standard constructions, e.g.
Definition DisplayTeX.cc:567
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:103
void print_tableau(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:197
void print_ftableau(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:222
std::string texify(std::string) const
Definition DisplayTeX.cc:260
void print_components(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:918
void print_closing_bracket(std::ostream &, str_node::bracket_t, str_node::parent_rel_t)
Definition DisplayTeX.cc:409
void print_fraclike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:545
void print_commalike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:489
void print_indexbracket(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:979
bool reads_as_operator(Ex::iterator obj, Ex::iterator arg) const
Determine whether the indicated object 'obj', when acting on the single argument 'arg',...
Definition DisplayTeX.cc:96
bool tight_star
Definition DisplayTeX.hh:39
void print_conditional(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:960
bool children_have_brackets(Ex::iterator ch) const
Definition DisplayTeX.cc:991
void print_other(std::ostream &str, Ex::iterator it)
Definition DisplayTeX.cc:119
void print_children(std::ostream &, Ex::iterator, int skip=0)
Definition DisplayTeX.cc:301
void print_arrowlike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:527
bool print_star
Definition DisplayTeX.hh:38
void print_dot(std::ostream &str, Ex::iterator it)
Definition DisplayTeX.cc:536
void print_powlike(std::ostream &, Ex::iterator)
Definition DisplayTeX.cc:762
void print_parent_rel(std::ostream &, str_node::parent_rel_t, bool first)
Definition DisplayTeX.cc:434
Basic storage class for symbolic mathemematical expressions.
Definition Storage.hh:142
Definition Kernel.hh:15
bracket_t
Definition Storage.hh:58
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:62
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
const char * unichar(kunichar c)
void set(rset_t::iterator &num, multiplier_t fac)
Definition Storage.cc:1063