#include "LaTeXFeatures.h"
#include "LyXRC.h"
#include "MacroTable.h"
-#include "MathMacro.h"
-#include "MathMacroTemplate.h"
+#include "InsetMathMacro.h"
+#include "InsetMathMacroTemplate.h"
#include "MetricsInfo.h"
#include "output_xhtml.h"
#include "Paragraph.h"
if (os.strikeoutMath()) {
if (os.ulemCmd() == WriteStream::UNDERLINE)
os << "\\raisebox{-\\belowdisplayshortskip}{"
- "\\lyxmathsout{\\parbox[b]{\\columnwidth}{";
+ "\\lyxmathsout{\\parbox[b]{\\linewidth}{";
else
- os << "\\lyxmathsout{\\parbox{\\columnwidth}{";
+ os << "\\lyxmathsout{\\parbox{\\linewidth}{";
} else if (os.ulemCmd() == WriteStream::UNDERLINE)
os << "\\raisebox{-\\belowdisplayshortskip}{"
- "\\parbox[b]{\\columnwidth}{";
+ "\\parbox[b]{\\linewidth}{";
else if (os.ulemCmd() == WriteStream::STRIKEOUT)
- os << "\\parbox{\\columnwidth}{";
+ os << "\\parbox{\\linewidth}{";
}
}
-} // end anon namespace
+} // namespace
HullType hullType(docstring const & s)
namespace {
const char * counters_to_save[] = {"section", "chapter"};
unsigned int const numcnts = sizeof(counters_to_save)/sizeof(char *);
-}
+} // namespace
void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype)
}
if (numberedType()) {
- Changer dummy = mi.base.changeFontSet("mathbf");
+ Changer dummy = mi.base.changeFontSet("mathrm");
int l = 0;
for (row_type row = 0; row < nrows(); ++row)
l = max(l, mathed_string_width(mi.base.font, nicelabel(row)));
if (l)
- dim.wid += 30 + l;
+ // Value was hardcoded to 30 pixels
+ dim.wid += Length(0.3, Length::IN).inPixels(mi.base) + l;
}
// reserve some space for marker.
Changer dummy2 = pi.base.font.changeStyle(display() ? LM_ST_DISPLAY
: LM_ST_TEXT);
- InsetMathGrid::draw(pi, x + 1, y);
+ int xmath = x;
+ BufferParams::MathNumber const math_number = buffer().params().getMathNumber();
+ if (numberedType() && math_number == BufferParams::LEFT) {
+ Changer dummy = pi.base.changeFontSet("mathrm");
+ int l = 0;
+ for (row_type row = 0; row < nrows(); ++row)
+ l = max(l, mathed_string_width(pi.base.font, nicelabel(row)));
+
+ if (l)
+ // Value was hardcoded to 30 pixels
+ xmath += Length(0.3, Length::IN).inPixels(pi.base) + l;
+ }
+
+ InsetMathGrid::draw(pi, xmath + 1, y);
drawMarkers2(pi, x, y);
if (numberedType()) {
- int const xx = x + colinfo_.back().offset_ + colinfo_.back().width_ + 20;
+ Changer dummy = pi.base.changeFontSet("mathrm");
for (row_type row = 0; row < nrows(); ++row) {
int const yy = y + rowinfo_[row].offset_;
- Changer dummy = pi.base.changeFontSet("mathrm");
docstring const nl = nicelabel(row);
- pi.draw(xx, yy, nl);
+ if (math_number == BufferParams::LEFT)
+ pi.draw(x, yy, nl);
+ else {
+ int l = mathed_string_width(pi.base.font, nl);
+ pi.draw(x + dim.wid - l, yy, nl);
+ }
}
}
+
// drawing change line
if (canPaintChange(*bv))
pi.change_.paintCue(pi, x + 1, y + 1 - dim.asc,
MacroNameSet::iterator const end = macros.end();
for (size_t i = 0; i < md.size(); ++i) {
- MathMacro const * mi = md[i].nucleus()->asMacro();
- MathMacroTemplate const * mt = md[i].nucleus()->asMacroTemplate();
+ InsetMathMacro const * mi = md[i].nucleus()->asMacro();
+ InsetMathMacroTemplate const * mt = md[i].nucleus()->asMacroTemplate();
InsetMathScript const * si = md[i].nucleus()->asScriptInset();
InsetMathFracBase const * fi = md[i].nucleus()->asFracBaseInset();
InsetMathGrid const * gi = md[i].nucleus()->asGridInset();
for (idx_type idx = 0; idx < nargs(); ++idx)
usedMacros(cell(idx), pos, macros, defs);
- MacroNameSet::iterator it = defs.begin();
- MacroNameSet::iterator end = defs.end();
docstring macro_preamble;
- for (; it != end; ++it)
- macro_preamble.append(*it);
+ for (auto const & defit : defs)
+ macro_preamble.append(defit);
// set the font series and size for this snippet
DocIterator dit = pos.getInnerText();
endfont += '}';
}
if (lsize != "normalsize" && !prefixIs(lsize, "error"))
- setfont += from_ascii("\\" + lsize + '\n');
+ setfont += from_ascii("\\" + lsize + '\n');
docstring setcnt;
if (forexport && haveNumbers()) {
case hullEquation:
case hullMultline:
case hullGather:
- return AlignCenter;
+ if (buffer().params().is_math_indent)
+ return AlignLeft;
+ else
+ return AlignCenter;
}
// avoid warning
return AlignCenter;
}
+
+int InsetMathHull::indent(BufferView const & bv) const
+{
+ // FIXME: set this in the textclass. This value is what the article class uses.
+ static Length default_indent(2.5, Length::EM);
+ if (display() != Inline && buffer().params().is_math_indent) {
+ Length const & len = buffer().params().getMathIndent();
+ if (len.empty())
+ return bv.inPixels(default_indent);
+ else
+ return bv.inPixels(len);
+ } else
+ return Inset::indent(bv);
+}
+
+
bool InsetMathHull::numberedType() const
{
switch (type_) {
default:
// we passed the guard so we should not be here
- LASSERT("Mutation not implemented, but should have been.", return);
+ LYXERR0("Mutation not implemented, but should have been.");
+ LASSERT(false, return);
break;
}// switch
}
return tmpcur.getStatus(cmd, status) && status.enabled();
}
-}
+} // namespace
bool InsetMathHull::getStatus(Cursor & cur, FuncRequest const & cmd,
case LFUN_LABEL_COPY_AS_REFERENCE: {
bool enabled = false;
- row_type row;
if (cmd.argument().empty() && &cur.inset() == this) {
// if there is no argument and we're inside math, we retrieve
// the row number from the cursor position.
- row = (type_ == hullMultline) ? nrows() - 1 : cur.row();
+ row_type row = (type_ == hullMultline) ? nrows() - 1 : cur.row();
enabled = numberedType() && label_[row] && numbered(row);
} else {
// if there is an argument, find the corresponding label, else
}
-void InsetMathHull::revealCodes(Cursor & cur) const
-{
- if (!cur.inMathed())
- return;
- odocstringstream os;
- cur.info(os);
- cur.message(os.str());
-/*
- // write something to the minibuffer
- // translate to latex
- cur.markInsert(bv);
- ostringstream os;
- write(os);
- string str = os.str();
- cur.markErase(bv);
- string::size_type pos = 0;
- string res;
- for (string::iterator it = str.begin(); it != str.end(); ++it) {
- if (*it == '\n')
- res += ' ';
- else if (*it == '\0') {
- res += " -X- ";
- pos = it - str.begin();
- }
- else
- res += *it;
- }
- if (pos > 30)
- res = res.substr(pos - 30);
- if (res.size() > 60)
- res = res.substr(0, 60);
- cur.message(res);
-*/
-}
-
-
/////////////////////////////////////////////////////////////////////
int InsetMathHull::plaintext(odocstringstream & os,
OutputParams const & op, size_t max_length) const
{
- // disables ASCII-art for export of equations. See #2275.
- if (0 && display()) {
+ // Try enabling this now that there is a flag as requested at #2275.
+ if (buffer().isExporting() && display()) {
Dimension dim;
TextMetricsInfo mi;
metricsT(mi, dim);