]> git.lyx.org Git - features.git/blob - src/mathed/MathClass.h
Introduce the notion of math class
[features.git] / src / mathed / MathClass.h
1 // -*- C++ -*-
2 /**
3  * \file MathClass.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * \author Jean-Marc Lasgouttes
8  *
9  * Full author contact details are available in file CREDITS.
10  */
11
12 #ifndef MATH_CLASS_H
13 #define MATH_CLASS_H
14
15 #include "support/strfwd.h"
16
17 namespace lyx {
18
19
20 /* The TeXbook, p. 158:
21  *
22  * There are thirteen kinds of atoms, each of which might act
23  * differently in a formula; for example, ‘(’ is an Open atom because
24  * it comes from an opening. Here is a complete list of the different
25  * kinds:
26
27  * + Ord: an ordinary atom like ‘x’
28  * + Op: a large operator atom like ‘\sum’
29  * + Bin: a binary operation atom like ‘+’
30  * + Rel: a relation atom like ‘=’
31  * + Open: an opening atom like ‘(’
32  * + Close: a closing atom like ‘)’
33  * + Punct: a punctuation atom like ‘,’
34  * + Inner: an inner atom like ‘\frac{1}{2}’
35  * + Over: an overline atom like ‘\overline{x}’
36  * + Under: an underline atom like ‘\underline{x}’
37  * + Acc: an accented atom like ‘\hat{x}’
38  * + Rad: a radical atom like ‘\sqrt{2}’
39  * + Vcent: a vbox to be centered, produced by \vcenter.
40  *
41  * Over, Under, Acc, Rad and Vcent are not considered in the enum
42  * below. The relvant elements will be considered as Ord.
43  */
44 enum MathClass {
45         MC_ORD,
46         MC_OP,
47         MC_BIN,
48         MC_REL,
49         MC_OPEN,
50         MC_CLOSE,
51         MC_PUNCT,
52         MC_INNER,
53         MC_UNKNOWN
54 };
55
56
57 MathClass string_to_class(docstring const &);
58
59 docstring const class_to_string(MathClass);
60
61
62 } // namespace lyx
63
64 #endif