} else {
// FLAG_END is a hack, we need to read all of it
+ cellinfo[row][col].leftline = colinfo[col].leftline;
+ cellinfo[row][col].rightline = colinfo[col].rightline;
+ cellinfo[row][col].align = colinfo[col].align;
cellinfo[row][col].content = parse_text(p, FLAG_END, false, textclass);
}
}
//cerr << "// output what we have\n";
// output what we have
- os << "<lyxtabular version=\"3\" rows=\"" << rowinfo.size()
+ os << "\n<lyxtabular version=\"3\" rows=\"" << rowinfo.size()
<< "\" columns=\"" << colinfo.size() << "\">\n"
<< "<features>\n";
//cerr << "// after header\n";
for (size_t col = 0; col < colinfo.size(); ++col) {
- os << "<column alignment=\"" << colinfo[col].align << "\"";
- if (colinfo[col].rightline)
- os << " rightline=\"true\"";
+ os << "<column alignment=\""
+ << verbose_align(colinfo[col].align) << "\"";
+ os << " valignment=\"top\"";
if (colinfo[col].leftline)
os << " leftline=\"true\"";
+ if (colinfo[col].rightline)
+ os << " rightline=\"true\"";
+ if (colinfo[col].width.size())
+ os << " width=\"" << colinfo[col].width << "\"";
if (colinfo[col].special.size())
os << " special=\"" << colinfo[col].special << "\"";
- os << " valignment=\"top\"";
- os << " width=\"" << colinfo[col].width << "\"";
os << ">\n";
}
//cerr << "// after cols\n";
os << "<cell";
if (cell.multi)
os << " multicolumn=\"" << cell.multi << "\"";
- if (cell.leftline)
- os << " leftline=\"true\"";
- if (cell.rightline)
- os << " rightline=\"true\"";
+ os << " alignment=\"" << verbose_align(cell.align)
+ << "\""
+ << " valignment=\"top\"";
if (cell.topline)
os << " topline=\"true\"";
if (cell.bottomline)
os << " bottomline=\"true\"";
+ if (cell.leftline)
+ os << " leftline=\"true\"";
+ if (cell.rightline)
+ os << " rightline=\"true\"";
//cerr << "\nrow: " << row << " col: " << col;
//if (cell.topline)
// cerr << " topline=\"true\"";
//if (cell.bottomline)
// cerr << " bottomline=\"true\"";
- os << " alignment=\"" << verbose_align(cell.align) << "\""
- << " valignment=\"top\""
- << " usebox=\"none\""
- << ">"
+ os << " usebox=\"none\""
+ << ">"
<< "\n\\begin_inset Text"
<< "\n\n\\layout Standard\n\n"
<< cell.content
- << "\n\\end_inset\n\n"
+ << "\n\\end_inset \n"
<< "</cell>\n";
}
os << "</row>\n";
os << "\nstatus Collapsed\n\n\\layout Standard\n\n";
for (string::const_iterator it = s.begin(), et = s.end(); it != et; ++it) {
if (*it == '\\')
- os << "\n\\backslash\n";
+ os << "\n\\backslash \n";
else
os << *it;
}
if (t.character() == '~') {
if (active_environment() == "lyxcode")
os << ' ';
- else
- os << "\\SpecialChar ~\n";
+ else
+ os << "\\InsetSpace ~\n";
} else
os << t.character();
}
// control sequences
//
- else if (t.cs() == "ldots") {
- skip_braces(p);
- os << "\n\\SpecialChar \\ldots{}\n";
- }
-
else if (t.cs() == "(") {
begin_inset(os, "Formula");
os << " \\(";
handle_par(os);
parse_text(p, os, FLAG_END, outer,
textclass);
- } else if (name == "enumerate" || name == "itemize"
- || name == "lyxlist") {
- size_t const n = active_environments.size();
- string const s = active_environments[n - 2];
- bool const deeper = s == "enumerate" || s == "itemize"
- || s == "lyxlist";
- if (deeper)
- os << "\n\\begin_deeper";
- os << "\n\\layout " << cap(name) << "\n\n";
- if (name == "lyxlist")
+ // The single '=' is meant here.
+ } else if ((layout_ptr = findLayout(textclass, t.cs())).get() &&
+ layout_ptr->isEnvironment()) {
+ size_t const n = active_environments.size();
+ string const s = active_environments[n - 2];
+ bool const deeper = s == "enumerate" || s == "itemize"
+ || s == "lyxlist";
+ if (deeper)
+ os << "\n\\begin_deeper";
+ os << "\n\\layout " << layout_ptr->name()
+ << "\n\n";
+ switch (layout_ptr->latextype) {
+ case LATEX_LIST_ENVIRONMENT:
+ os << "\\labelwidthstring "
+ << p.verbatim_item() << '\n';
+ break;
+ case LATEX_BIB_ENVIRONMENT:
p.verbatim_item(); // swallow next arg
+ break;
+ default:
+ break;
+ }
parse_text(p, os, FLAG_END, outer, textclass);
- if (deeper)
- os << "\n\\end_deeper\n";
+ if (deeper)
+ os << "\n\\end_deeper\n";
handle_par(os);
- } else if (name == "thebibliography") {
- p.verbatim_item(); // swallow next arg
- parse_text(p, os, FLAG_END, outer, textclass);
- os << "\n\\layout Bibliography\n\n";
} else {
handle_par(os);
parse_text(p, os, FLAG_END, outer, textclass);
s = parse_text(p, FLAG_BRACK_LAST, outer, textclass);
}
handle_par(os);
- os << s << ' ';
+ if (s.size())
+ os << s << ' ';
}
else if (t.cs() == "def") {
else if (t.cs() == "makeindex" || t.cs() == "maketitle")
skip_braces(p); // swallow this
- else if (t.cs() == "tableofcontents")
+ else if (t.cs() == "tableofcontents") {
+ begin_inset(os, "LatexCommand ");
+ os << '\\' << t.cs() << "{}\n";
+ end_inset(os);
skip_braces(p); // swallow this
+ }
+
else if (t.cs() == "textrm") {
os << "\n\\family roman \n";
else if (t.cs() == "bibitem") {
os << "\n\\layout Bibliography\n\\bibitem ";
os << p.getOpt();
- os << '{' << p.verbatim_item() << '}' << "\n\n";
+ os << '{' << p.verbatim_item() << '}' << "\n";
}
else if (is_known(t.cs(), known_latex_commands)) {
skip_braces(p); // eat {}
}
+ else if (t.cs() == "ldots") {
+ skip_braces(p);
+ os << "\\SpecialChar \\ldots{}\n";
+ }
+
else if (t.cs() == "lyxarrow") {
os << "\\SpecialChar \\menuseparator\n";
skip_braces(p);
skip_braces(p);
}
- else if (t.cs() == "@") {
- os << "\\SpecialChar \\@";
- skip_braces(p);
+ else if (t.cs() == "@" && p.next_token().asInput() == ".") {
+ os << "\\SpecialChar \\@.\n";
+ p.get_token();
}
+ else if (t.cs() == "-")
+ os << "\\SpecialChar \\-\n";
+
else if (t.cs() == "textasciitilde") {
os << '~';
skip_braces(p);
}
else if (t.cs() == "textbackslash") {
- os << "\n\\backslash\n";
+ os << "\n\\backslash \n";
skip_braces(p);
}
- else if (t.cs() == "_" || t.cs() == "&" || t.cs() == "#" || t.cs() == "$"
- || t.cs() == "{" || t.cs() == "}" || t.cs() == "%")
+ else if (t.cs() == "_" || t.cs() == "&" || t.cs() == "#"
+ || t.cs() == "$" || t.cs() == "{" || t.cs() == "}"
+ || t.cs() == "%")
os << t.cs();
else if (t.cs() == "char") {
else if (t.cs() == "i" || t.cs() == "j")
os << "\\" << t.cs() << ' ';
- else if (t.cs() == "-")
- os << "\\SpecialChar \\-\n";
-
else if (t.cs() == "\\")
- os << "\n\\newline\n";
+ os << "\n\\newline \n";
else if (t.cs() == "input")
handle_ert(os, "\\input{" + p.verbatim_item() + "}\n");