}
+// 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) {
{
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);
}
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:");
}
-int InsetMathHull::plaintext(odocstream & os, OutputParams const &) const
+int InsetMathHull::plaintext(odocstream & os, OutputParams const & op) 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)
+ 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::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";
}