1 /** A small helper function
2 \author Jean-Marc Lasgouttes (2003)
14 void begin_layout(ostream & os, LyXLayout_ptr layout)
16 os << "\n\\begin_layout " << layout->name() << "\n\n";
20 void end_layout(ostream & os)
22 os << "\n\\end_layout\n";
26 void begin_deeper(ostream & os)
28 os << "\n\\begin_deeper \n";
32 void end_deeper(ostream & os)
34 os << "\n\\end_deeper \n";
39 Context::Context(bool need_layout_,
40 LyXTextClass const & textclass_,
41 LyXLayout_ptr layout_, LyXLayout_ptr parent_layout_)
42 : need_layout(need_layout_),
43 need_end_layout(false), need_end_deeper(false),
44 has_item(false), deeper_paragraph(false),
45 textclass(textclass_),
46 layout(layout_), parent_layout(parent_layout_)
49 layout = textclass.defaultLayout();
50 if (!parent_layout.get())
51 parent_layout = textclass.defaultLayout();
55 void Context::check_layout(ostream & os)
60 // are we in a list-like environment?
61 if (layout->isEnvironment()
62 && layout->latextype != LATEX_ENVIRONMENT) {
64 if (deeper_paragraph) {
66 deeper_paragraph = false;
68 begin_layout(os, layout);
71 need_end_layout = true;
73 // a standard paragraph in an
74 // enumeration. We have to recognize
75 // that this may require a begin_deeper.
76 if (!deeper_paragraph)
78 begin_layout(os, textclass.defaultLayout());
80 need_end_layout = true;
81 deeper_paragraph = true;
84 begin_layout(os, layout);
86 need_end_layout = true;
87 if (!extra_stuff.empty()) {
96 void Context::check_end_layout(ostream & os)
98 if (need_end_layout) {
100 need_end_layout = false;
105 void Context::check_deeper(ostream & os)
107 if (parent_layout->isEnvironment()) {
108 if (need_end_deeper) {
109 // no need to have \end_deeper \begin_deeper
110 need_end_deeper = false;
113 need_end_deeper = true;
116 check_end_deeper(os);
120 void Context::check_end_deeper(ostream & os)
122 if (need_end_deeper) {
124 need_end_deeper = false;
126 if (deeper_paragraph) {
128 deeper_paragraph = false;
133 void Context::dump(ostream & os, string const & desc) const
135 os << "\n" << desc <<" [";
137 os << "need_layout ";
139 os << "need_end_layout ";
140 if (!extra_stuff.empty())
141 os << "extrastuff=[" << extra_stuff << "] ";
142 os << "layout=" << layout->name();
143 os << " parent_layout=" << parent_layout->name() << "]" << endl;