4 * Main LyX Inset for defining math macros
6 * \author Alejandro Aguilar Sierra
9 * Full author contact details are available in file CREDITS
11 * You are free to use and modify this code under the terms of
12 * the GNU General Public Licence version 2 or later.
15 #ifndef INSET_FORMULA_MACRO_H
16 #define INSET_FORMULA_MACRO_H
18 #include "formulabase.h"
24 class MathMacroTemplate;
26 // An InsetFormulaMacro only knows its name and asks the global
27 // MathMacroTable if it needs to know more.
30 class InsetFormulaMacro : public InsetFormulaBase {
34 /// construct a macro hull from its name and the number of arguments
35 explicit InsetFormulaMacro(string const & name, int nargs);
36 /// constructs a mocro from its LaTeX definition
37 explicit InsetFormulaMacro(string const & s);
39 int ascent(BufferView *, LyXFont const &) const;
41 int descent(BufferView *, LyXFont const &) const;
43 int width(BufferView *, LyXFont const &) const;
45 void draw(BufferView *, LyXFont const &, int, float &, bool) const;
48 void read(Buffer const *, LyXLex & lex);
50 void write(Buffer const *, std::ostream & os) const;
52 int ascii(Buffer const *, std::ostream &, int linelen) const;
54 int latex(Buffer const *, std::ostream & os, bool fragile, bool free_spc) const;
56 int linuxdoc(Buffer const *, std::ostream & os) const;
58 int docbook(Buffer const *, std::ostream &, bool mixcont) const;
61 Inset * clone(Buffer const &, bool same_id = false) const;
63 Inset::Code lyxCode() const;
65 MathAtom const & par() const;
70 void read(std::istream & is);
72 string prefix() const;