mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
* text.C (parse_text): read environment from layout file too. Now,
all layout entries are supported (but many hacks remain); note that the nesting support is broken and will have to be completely redone * table.C (handle_tabular): make the output more similar to LyX and fix a little * text.C (output_layout): fix handling of optional argument (parse_text): small tweaks to make output format closer to lyx format; support \tableofcontents; fix/improve support for various special characters git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7417 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
cf9d1fb908
commit
34215d69bc
@ -1,7 +1,15 @@
|
||||
2003-07-27 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
2003-07-28 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
|
||||
|
||||
* text.C (parse_text): read environment from layout file too. Now,
|
||||
all layout entries are supported (but many hacks remain)
|
||||
|
||||
* table.C (handle_tabular): make the output more similar to LyX
|
||||
and fix a little
|
||||
|
||||
* text.C (output_layout): fix handling of optional argument
|
||||
(parse_text): small tweaks to make output format closer to lyx format
|
||||
(parse_text): small tweaks to make output format closer to lyx
|
||||
format; support \tableofcontents; fix/improve support for various
|
||||
special characters
|
||||
|
||||
2003-07-27 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
|
@ -415,6 +415,9 @@ void handle_tabular(Parser & p, ostream & os,
|
||||
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
@ -435,21 +438,23 @@ void handle_tabular(Parser & p, ostream & os,
|
||||
|
||||
//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";
|
||||
@ -466,27 +471,28 @@ void handle_tabular(Parser & p, ostream & os,
|
||||
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";
|
||||
|
@ -103,7 +103,7 @@ void handle_ert(ostream & os, string const & s)
|
||||
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;
|
||||
}
|
||||
@ -251,7 +251,7 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
if (active_environment() == "lyxcode")
|
||||
os << ' ';
|
||||
else
|
||||
os << "\\SpecialChar ~\n";
|
||||
os << "\\InsetSpace ~\n";
|
||||
} else
|
||||
os << t.character();
|
||||
}
|
||||
@ -288,11 +288,6 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
// control sequences
|
||||
//
|
||||
|
||||
else if (t.cs() == "ldots") {
|
||||
skip_braces(p);
|
||||
os << "\n\\SpecialChar \\ldots{}\n";
|
||||
}
|
||||
|
||||
else if (t.cs() == "(") {
|
||||
begin_inset(os, "Formula");
|
||||
os << " \\(";
|
||||
@ -340,25 +335,32 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
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);
|
||||
@ -388,7 +390,8 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
s = parse_text(p, FLAG_BRACK_LAST, outer, textclass);
|
||||
}
|
||||
handle_par(os);
|
||||
os << s << ' ';
|
||||
if (s.size())
|
||||
os << s << ' ';
|
||||
}
|
||||
|
||||
else if (t.cs() == "def") {
|
||||
@ -463,8 +466,13 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
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";
|
||||
@ -517,7 +525,7 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
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)) {
|
||||
@ -553,6 +561,11 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
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);
|
||||
@ -563,11 +576,14 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
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);
|
||||
@ -579,12 +595,13 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
}
|
||||
|
||||
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") {
|
||||
@ -626,11 +643,8 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
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");
|
||||
|
Loading…
Reference in New Issue
Block a user