}
+// FIXME This should really be controlled by the TOC level, or
+// something of the sort.
namespace {
const char * counters_to_save[] = {"section", "chapter"};
unsigned int const numcnts = sizeof(counters_to_save)/sizeof(char *);
if (haveNumbers()) {
BufferParams const & bp = buffer_->params();
string const & lang = it->getParLanguage(bp)->code();
- Counters & cnts = bp.documentClass().counters();
+ Counters & cnts =
+ buffer_->masterBuffer()->params().documentClass().counters();
// right now, we only need to do this at export time
if (utype == OutputUpdate) {
}
-void InsetMathHull::addToToc(DocIterator const & pit) const
+void InsetMathHull::addToToc(DocIterator const & pit, bool output_active) const
{
if (!buffer_) {
//FIXME: buffer_ should be set at creation for this inset! Problem is
if (!numbered_[row])
continue;
if (label_[row])
- label_[row]->addToToc(pit);
- toc.push_back(TocItem(pit, 0, nicelabel(row)));
+ label_[row]->addToToc(pit, output_active);
+ toc.push_back(TocItem(pit, 0, nicelabel(row), output_active));
}
}
{
if (type_ == hullEqnArray)
return "rcl"[col];
+ if (type_ == hullMultline)
+ return 'c';
if (type_ == hullGather)
return 'c';
if (type_ >= hullAlign)
}
+char InsetMathHull::displayColAlign(col_type col, row_type row) const
+{
+ if (type_ == hullMultline) {
+ if (row == 0)
+ return 'l';
+ if (row == nrows() - 1)
+ return 'r';
+ }
+ return InsetMathGrid::displayColAlign(col, row);
+}
+
+
int InsetMathHull::defaultColSpace(col_type col)
{
if (type_ == hullAlign || type_ == hullAlignAt)
dim.wid += 30 + l;
}
+ if (type_ == hullRegexp)
+ dim.wid += 2;
// make it at least as high as the current font
int asc = 0;
int des = 0;
label_[row] = dummy_pointer;
} else {
if (buffer_)
- label_[row]->updateCommand(label);
+ label_[row]->updateLabelAndRefs(label);
else
label_[row]->setParam("name", label);
}
features.addPreambleSnippet(
string("\\newcommand{\\regexp}[1]{\\fcolorbox{")
+ frcol + string("}{")
- + bgcol + string("}{\\texttt{#1}}}"));
+ + bgcol + string("}{\\ensuremath{\\mathtt{#1}}}}"));
+ features.addPreambleSnippet(
+ string("\\newcommand{\\endregexp}{}"));
}
// Validation is necessary only if not using AMS math.
// it would be better to do this elsewhere, but we can't validate in
// InsetMathMatrix and we have no way, outside MathExtern, to know if
// we even have any matrices.
- features.addPreambleSnippet("<style type=\"text/css\">\n"
+ features.addCSSSnippet(
"table.matrix{display: inline-block; vertical-align: middle; text-align:center;}\n"
"table.matrix td{padding: 0.25px;}\n"
"td.ldelim{width: 0.5ex; border: thin solid black; border-right: none;}\n"
- "td.rdelim{width: 0.5ex; border: thin solid black; border-left: none;}\n"
- "</style>");
+ "td.rdelim{width: 0.5ex; border: thin solid black; border-left: none;}");
}
InsetMathGrid::validate(features);
}
break;
case hullRegexp:
- os << "\\regexp{{{";
+ os << "\\regexp{";
break;
default:
break;
case hullRegexp:
- os << "}}}";
+ // Only used as a heuristic to find the regexp termination, when searching in ignore-format mode
+ os << "\\endregexp{}}";
break;
default:
return;
bool numbered = numberedType();
- docstring lab;
+ // Move the number and raw pointer, do not call label() (bug 7511)
+ InsetLabel * label = dummy_pointer;
+ docstring number = empty_docstring();
if (type_ == hullMultline) {
if (row + 1 == nrows()) {
numbered_[row] = false;
- lab = label(row);
+ swap(label, label_[row]);
+ swap(number, numbers_[row]);
} else
numbered = false;
}
numbered_.insert(numbered_.begin() + row + 1, numbered);
- numbers_.insert(numbers_.begin() + row + 1, empty_docstring());
- label_.insert(label_.begin() + row + 1, dummy_pointer);
- if (!lab.empty())
- label(row + 1, lab);
+ numbers_.insert(numbers_.begin() + row + 1, number);
+ label_.insert(label_.begin() + row + 1, label);
InsetMathGrid::addRow(row);
}
InsetMathGrid::addCol(2);
for (row_type row = 0; row < nrows(); ++row) {
idx_type const i = 3 * row + 1;
- if (cell(i).size()) {
+ if (!cell(i).empty()) {
cell(i + 1) = MathData(buffer_, cell(i).begin() + 1, cell(i).end());
cell(i).erase(1, cell(i).size());
}
MathData ar;
if (cur.inMathed() && cur.selection()) {
asArray(grabAndEraseSelection(cur), ar);
- } else if (pos == cur.cell().size()) {
+ } else if (!pos == cur.cell().empty()) {
ar = cur.cell();
lyxerr << "use whole cell: " << ar << endl;
} else {
cur.undispatched();
break;
- case LFUN_BREAK_PARAGRAPH:
+ case LFUN_PARAGRAPH_BREAK:
// just swallow this
break;
if (type_ == hullSimple || type_ == hullEquation) {
cur.recordUndoInset();
bool const align =
- cur.bv().buffer().params().use_amsmath == BufferParams::package_on;
+ cur.bv().buffer().params().use_package("amsmath") == BufferParams::package_on;
mutate(align ? hullAlign : hullEqnArray);
// mutate() may change labels and such.
cur.forceBufferUpdate();
}
case LFUN_LABEL_INSERT: {
- cur.recordUndoInset();
row_type r = (type_ == hullMultline) ? nrows() - 1 : cur.row();
docstring old_label = label(r);
docstring const default_label = from_ascii("eq:");
// we never allow this in math, and we want to bind enter
// to another actions in command-alternatives
- case LFUN_BREAK_PARAGRAPH:
+ case LFUN_PARAGRAPH_BREAK:
status.setEnabled(false);
return true;
case LFUN_MATH_MUTATE: {
}
-int InsetMathHull::plaintext(odocstream & os, OutputParams const &) const
+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()) {
// reset metrics cache to "real" values
//metrics();
return tpain.textheight();
- } else {
- odocstringstream oss;
- Encoding const * const enc = encodings.fromLyXName("utf8");
- WriteStream wi(oss, false, true, WriteStream::wsDefault, enc);
- // Fix Bug #6139
- if (type_ == hullRegexp)
- write(wi);
- else
- wi << cell(0);
- docstring const str = oss.str();
- os << str;
- return str.size();
}
+
+ odocstringstream oss;
+ Encoding const * const enc = encodings.fromLyXName("utf8");
+ WriteStream wi(oss, false, true, WriteStream::wsDefault, enc);
+
+ // Fix Bug #6139
+ if (type_ == hullRegexp)
+ write(wi);
+ else {
+ for (row_type r = 0; r < nrows(); ++r) {
+ for (col_type c = 0; c < ncols(); ++c)
+ wi << (c == 0 ? "" : "\t") << cell(index(r, c));
+ // if it's for the TOC, we write just the first line
+ // and do not include the newline.
+ if (op.for_toc || op.for_tooltip || oss.str().size() >= max_length)
+ break;
+ wi << "\n";
+ }
+ }
+ docstring const str = oss.str();
+ os << str;
+ return str.size();
}
// probably should allow for some kind of customization here
string const tag = (getType() == hullSimple) ? "span" : "div";
xs << html::StartTag(tag, "class='math'")
- << XHTMLStream::ESCAPE_AND
<< latex
<< html::EndTag(tag)
<< html::CR();
void InsetMathHull::toString(odocstream & os) const
{
- plaintext(os, OutputParams(0));
+ odocstringstream ods;
+ plaintext(ods, OutputParams(0));
+ os << ods.str();
}
void InsetMathHull::forToc(docstring & os, size_t) const
{
odocstringstream ods;
- plaintext(ods, OutputParams(0));
+ OutputParams op(0);
+ op.for_toc = true;
+ plaintext(ods, op);
os += ods.str();
}
-docstring InsetMathHull::contextMenuName() const
+string InsetMathHull::contextMenuName() const
{
- return from_ascii("context-math");
+ return "context-math";
}