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()
58 : InsetCollapsable(), pos_(center),
59 inner_pos_(inner_center)
61 setLabel(_("minipage"));
62 LyXFont font(LyXFont::ALL_SANE);
65 font.setColor(LColor::footnote);
67 setAutoCollapse(false);
68 setInsetName("Minipage");
72 void InsetMinipage::Write(Buffer const * buf, ostream & os) const
74 os << getInsetName() << "\n";
75 InsetCollapsable::Write(buf, os);
79 Inset * InsetMinipage::Clone(Buffer const &) const
81 InsetMinipage * result = new InsetMinipage;
82 result->inset->init(inset);
84 result->collapsed = collapsed;
89 string const InsetMinipage::EditMessage() const
91 return _("Opened Minipage Inset");
95 int InsetMinipage::Latex(Buffer const * buf,
96 ostream & os, bool fragile, bool fp) const
98 os << "\\begin{minipage}{\\columnwidth}%\n";
100 int i = inset->Latex(buf, os, fragile, fp);
101 os << "\\end{minipage}%\n";
107 bool InsetMinipage::InsertInsetAllowed(Inset * in) const
109 if ((in->LyxCode() == Inset::FLOAT_CODE) ||
110 (in->LyxCode() == Inset::MARGIN_CODE)) {
117 InsetMinipage::Position InsetMinipage::pos() const
123 void InsetMinipage::pos(InsetMinipage::Position p)
129 InsetMinipage::InnerPosition InsetMinipage::innerPos() const
135 void InsetMinipage::innerPos(InsetMinipage::InnerPosition ip)
141 LyXLength const & InsetMinipage::height() const
147 void InsetMinipage::height(LyXLength const & ll)
153 LyXLength const & InsetMinipage::width() const
159 void InsetMinipage::width(LyXLength const & ll)