void MathCharInset::write(std::ostream & os, bool) const
{
- int brace = 0;
-
- if (MathIsSymbol(code_)) {
- latexkeys const * l = lm_get_key_by_id(char_, LM_TK_SYM);
-
- if (l == 0)
- l = lm_get_key_by_id(char_, LM_TK_BIGSYM);
-
- if (l) {
- os << '\\' << l->name << ' ';
- } else {
- lyxerr << "Could not find the LaTeX name for "
- << char_ << " and code_ " << code_ << "!" << std::endl;
- }
- } else {
- if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM)
- os << '\\' << math_font_name[code_ - LM_TC_RM] << '{';
-
- // Is there a standard logical XOR?
- if ((code_ == LM_TC_TEX && char_ != '{' && char_ != '}') ||
- (code_ == LM_TC_SPECIAL))
- os << '\\';
- else {
- if (char_ == '{')
- ++brace;
- if (char_ == '}')
- --brace;
- }
- if (char_ == '}' && code_ == LM_TC_TEX && brace < 0)
- lyxerr <<"Math warning: Unexpected closing brace.\n";
- else
- os << char_;
- }
+ if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM)
+ os << '\\' << math_font_name[code_ - LM_TC_RM] << '{';
+
+ if ((code_ == LM_TC_TEX && char_ != '{' && char_ != '}') ||
+ (code_ == LM_TC_SPECIAL))
+ os << '\\';
+
+ os << char_;
if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM)
os << '}';
void MathCharInset::writeNormal(std::ostream & os) const
{
- os << "[sqrt ";
- cell(0).writeNormal(os);
- os << "] ";
+ os << char_;
}
void MathCursor::breakLine()
{
+ // leave inner cells
+ while (popRight())
+ ;
+
MathMatrixInset * p = outerPar();
if (p->getType() == LM_OT_SIMPLE || p->getType() == LM_OT_EQUATION) {
p->mutate(LM_OT_EQNARRAY);
- p->addRow(0);
- idx() = p->nrows();
- pos() = 0;
+ idx() = 0;
+ pos() = size();
} else {
p->addRow(row());
bool MathCursor::goUp()
{
+ // first ask the inset if it knows better then we
+ if (par()->idxUp(idx(), pos()))
+ return true;
+
+ // if not, apply brute force.
int x0;
int y0;
getPos(x0, y0);
bool MathCursor::goDown()
{
+ // first ask the inset if it knows better then we
+ if (par()->idxDown(idx(), pos()))
+ return true;
+
+ // if not, apply brute force.
int x0;
int y0;
getPos(x0, y0);