void InsetMathNest::latex(otexstream & os, OutputParams const & runparams) const
{
- TeXMathStream wi(os, runparams.moving_arg, true,
- runparams.dryrun ? TeXMathStream::wsDryrun : TeXMathStream::wsDefault,
+ TeXMathStream::OutputType ot;
+ if (runparams.for_search != OutputParams::NoSearch)
+ ot = TeXMathStream::wsSearchAdv;
+ else if (runparams.dryrun)
+ ot = TeXMathStream::wsDryrun;
+ else
+ ot = TeXMathStream::wsDefault;
+ TeXMathStream wi(os, runparams.moving_arg, true, ot,
runparams.encoding);
wi.strikeoutMath(runparams.inDeletedInset);
if (runparams.inulemcmd) {
cur.clearTargetX();
cur.macroModeClose();
if (!cur.inset().idxNext(cur)) {
- cur.idx() = firstIdx();
- cur.pos() = 0;
+ if (cur.lastidx() == 0)
+ cur.popForward();
+ else {
+ cur.idx() = firstIdx();
+ cur.pos() = 0;
+ }
}
break;
cur.clearTargetX();
cur.macroModeClose();
if (!cur.inset().idxPrev(cur)) {
- cur.idx() = cur.lastidx();
- cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0;
+ if (cur.lastidx() == 0)
+ cur.popBackward();
+ else {
+ cur.idx() = cur.lastidx();
+ cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0;
+ }
}
break;
return true;
}
if (currentMode() == InsetMath::MATH_MODE && Encodings::isUnicodeTextOnly(c)) {
- MathAtom at = createInsetMath("text", buf);
- at.nucleus()->cell(0).push_back(MathAtom(new InsetMathChar(c)));
- cur.insert(at);
- cur.posForward();
+ MathAtom const atom(new InsetMathChar(c));
+ if (cur.prevInset() && cur.prevInset()->asInsetMath()->name() == "text") {
+ // reuse existing \text inset
+ cur.prevInset()->asInsetMath()->cell(0).push_back(atom);
+ } else {
+ MathAtom at = createInsetMath("text", buf);
+ at.nucleus()->cell(0).push_back(atom);
+ cur.insert(at);
+ cur.posForward();
+ }
return true;
}
} else {