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