1 /* This file is part of
2 * ======================================================
4 * LyX, The Document Processor
6 * Copyright 1998 The LyX Team.
8 *======================================================*/
13 #pragma implementation
16 #include "insetminipage.h"
19 #include "BufferView.h"
21 #include "insets/insettext.h"
22 #include "support/LOstream.h"
29 // Some information about Minipages in LaTeX:
30 // A minipage is a complete miniversion of a page and can contain
31 // its own footnotes, paragraphs, and array, tabular, and multicols
32 // environments. However it cannot contain floats or \marginpar's,
33 // but it can appear inside floats.
35 // The minipage environment is defined like this:
37 // \begin{minipage}[pos][height][inner-pos]{width} <text> \end{minipage}
40 // pos [opt] = is the vertical placement of the box with respect
41 // to the text baseline, [c], [t] and [b].
42 // height [opt] = the height of the box
43 // inner-pos [opt] = the position of the text within the box.
44 // It can be t, c, b or s, if unspecified the value
46 // width = the width of the box
48 // In LyX we should try to support all these parameters, settable in a
50 // In this pop-up diallog it should also be possible to set all margin
51 // values that is usable in the minipage.
52 // With regard to different formats (like DocBook) I guess a minipage
53 // can be used there also. Perhaps not in the latex way, but we do not
54 // have to output "" for minipages.
57 InsetMinipage::InsetMinipage()
60 setLabel(_("minipage"));
61 LyXFont font(LyXFont::ALL_SANE);
64 font.setColor(LColor::footnote);
66 setAutoCollapse(false);
67 setInsetName("Minipage");
71 void InsetMinipage::Write(Buffer const * buf, ostream & os) const
73 os << getInsetName() << "\n";
74 InsetCollapsable::Write(buf, os);
78 Inset * InsetMinipage::Clone() const
80 InsetMinipage * result = new InsetMinipage;
81 result->inset->init(inset);
83 result->collapsed = collapsed;
88 char const * InsetMinipage::EditMessage() const
90 return _("Opened Minipage Inset");
94 int InsetMinipage::Latex(Buffer const * buf,
95 ostream & os, bool fragile, bool fp) const
97 os << "\\begin{minipage}{\\columnwidth}%\n";
99 int i = inset->Latex(buf, os, fragile, fp);
100 os << "\\end{minipage}%\n";
106 bool InsetMinipage::InsertInsetAllowed(Inset * in) const
108 if ((in->LyxCode() == Inset::FLOAT_CODE) ||
109 (in->LyxCode() == Inset::MARGIN_CODE)) {