2 #ifndef MATH_SYMBOLINSET_H
3 #define MATH_SYMBOLINSET_H
9 #include "math_diminset.h"
13 // "normal" symbols that don't take limits and don't grow in displayed
16 class MathSymbolInset : public MathDimInset {
19 explicit MathSymbolInset(latexkeys const *);
21 explicit MathSymbolInset(char const *);
23 explicit MathSymbolInset(string const &);
25 MathInset * clone() const;
27 void metrics(MathMetricsInfo & st) const;
29 void draw(MathPainterInfo &, int x, int y) const;
32 /// do we take scripts?
33 bool isScriptable() const;
34 /// do we take \limits or \nolimits?
35 bool takesLimits() const;
36 /// identifies SymbolInset as such
37 MathSymbolInset const * asSymbolInset() const { return this; }
38 /// the LaTeX name of the symbol (without the backslash)
41 bool match(MathAtom const &) const;
42 /// request "external features"
43 void validate(LaTeXFeatures & features) const;
46 void normalize(NormalStream &) const;
48 void maplize(MapleStream &) const;
50 void mathematicize(MathematicaStream &) const;
52 void mathmlize(MathMLStream &) const;
54 void octavize(OctaveStream &) const;
56 void write(WriteStream & os) const;
58 void infoize(std::ostream & os) const;
62 latexkeys const * sym_;
66 mutable bool scriptable_;