2 #ifndef MATH_SYMBOLINSET_H
3 #define MATH_SYMBOLINSET_H
5 #include "math_inset.h"
10 // "normal" symbols that don't take limits and don't grow in displayed
13 class MathSymbolInset : public MathInset {
16 explicit MathSymbolInset(latexkeys const * l);
18 explicit MathSymbolInset(char const * name);
20 explicit MathSymbolInset(string const & name);
22 virtual std::auto_ptr<InsetBase> clone() const;
24 void metrics(MetricsInfo & mi, Dimension & dim) const;
26 void draw(PainterInfo &, int x, int y) const;
29 /// do we take scripts?
30 bool isScriptable() const;
31 /// do we take \limits or \nolimits?
32 bool takesLimits() const;
33 /// identifies SymbolInset as such
34 MathSymbolInset const * asSymbolInset() const { return this; }
35 /// the LaTeX name of the symbol (without the backslash)
38 bool match(MathAtom const &) const;
39 /// request "external features"
40 void validate(LaTeXFeatures & features) const;
43 void normalize(NormalStream &) const;
45 void maple(MapleStream &) const;
47 void maxima(MaximaStream &) const;
49 void mathematica(MathematicaStream &) const;
51 void mathmlize(MathMLStream &) const;
53 void octave(OctaveStream &) const;
55 void write(WriteStream & os) const;
57 void infoize2(std::ostream & os) const;
61 latexkeys const * sym_;
65 mutable bool scriptable_;