}
context.check_deeper(os);
context.check_layout(os);
- if (context.layout->optionalargs > 0) {
+ unsigned int optargs = 0;
+ while (optargs < context.layout->optargs) {
eat_whitespace(p, os, context, false);
- if (p.next_token().character() == '[') {
- p.get_token(); // eat '['
- begin_inset(os, "OptArg\n");
- os << "status collapsed\n\n";
- parse_text_in_inset(p, os, FLAG_BRACK_LAST, outer, context);
- end_inset(os);
- eat_whitespace(p, os, context, false);
- }
+ if (p.next_token().character() != '[')
+ break;
+ p.get_token(); // eat '['
+ begin_inset(os, "OptArg\n");
+ os << "status collapsed\n\n";
+ parse_text_in_inset(p, os, FLAG_BRACK_LAST, outer, context);
+ end_inset(os);
+ eat_whitespace(p, os, context, false);
+ optargs++;
+ }
+#if 0
+ // This is the code needed to parse required arguments, but
+ // required arguments come into being only much later than the
+ // file format tex2lyx is presently outputting.
+ unsigned int reqargs = 0;
+ while (reqargs < context.layout->reqargs) {
+ eat_whitespace(p, os, context, false);
+ if (p.next_token().character() != '{')
+ break;
+ p.get_token(); // eat '{'
+ begin_inset(os, "OptArg\n");
+ os << "status collapsed\n\n";
+ parse_text_in_inset(p, os, FLAG_BRACE_LAST, outer, context);
+ end_inset(os);
+ eat_whitespace(p, os, context, false);
+ reqargs++;
}
+#endif
parse_text(p, os, FLAG_ITEM, outer, context);
context.check_end_layout(os);
if (parent_context.deeper_paragraph) {
if (FileName::isAbsolute(name))
return;
- name = to_utf8(makeRelPath(from_utf8(makeAbsPath(name, getMasterFilePath()).absFilename()),
+ name = to_utf8(makeRelPath(from_utf8(makeAbsPath(name, getMasterFilePath()).absFileName()),
from_utf8(getParentFilePath())));
}
Context & context)
{
Layout const * newlayout = 0;
- // store the current selectlanguage to be used after \foreignlanguage
- string selectlang;
// Store the latest bibliographystyle (needed for bibtex inset)
string bibliographystyle;
bool const use_natbib = used_packages.find("natbib") != used_packages.end();
if (t.character() == ']' && (flags & FLAG_BRACK_LAST))
return;
+ if (t.character() == '}' && (flags & FLAG_BRACE_LAST))
+ return;
//
// cat codes
context.check_layout(os);
begin_inset(os, "LatexCommand ");
os << t.cs() << "\n";
- os << p.getOpt();
- os << "key " << '"' << p.verbatim_item() << '"' << "\n";
+ os << "label \"" << p.getOptContent() << "\"\n";
+ os << "key \"" << p.verbatim_item() << "\"\n";
end_inset(os);
}
else
simple = false;
} else
- paramtext += p.get_token().asString();
+ paramtext += p.get_token().cs();
} else {
- paramtext += p.get_token().asString();
+ paramtext += p.get_token().cs();
simple = false;
}
}
}
else if (t.cs() == "caption") {
+ // FIXME: this should get some cleanup. All
+ // the \begin_layout:s are output by the
+ // Context class!
p.skip_spaces();
context.check_layout(os);
p.skip_spaces();
begin_inset(os, "Caption\n\n");
- os << "\\begin_layout Standard";
+ os << "\\begin_layout "
+ << to_utf8(context.textclass.defaultLayout().name())
+ << '\n';
if (p.next_token().character() == '[') {
p.get_token(); // eat '['
begin_inset(os, "OptArg\n");
else if (t.cs() == "listof") {
p.skip_spaces(true);
- string const name = p.get_token().asString();
+ string const name = p.get_token().cs();
if (context.textclass.floats().typeExist(name)) {
context.check_layout(os);
begin_inset(os, "FloatList ");
if (!after.empty()) {
after.erase(0, 1);
after.erase(after.length() - 1, 1);
+ // LyX cannot handle newlines in the parameter
+ after = subst(after, "\n", " ");
}
if (!before.empty()) {
before.erase(0, 1);
before.erase(before.length() - 1, 1);
+ // LyX cannot handle newlines in the parameter
+ before = subst(before, "\n", " ");
}
begin_inset(os, "LatexCommand ");
os << t.cs() << "\n";
// save the language for the case that a
// \foreignlanguage is used
- //FIXME: this is wrong, the language should
- // be saved in the context. (JMarc)
- selectlang = subst(p.verbatim_item(), "\n", " ");
- os << "\\lang " << selectlang << "\n";
+ context.font.language = subst(p.verbatim_item(), "\n", " ");
+ os << "\\lang " << context.font.language << "\n";
}
else if (t.cs() == "foreignlanguage") {
// has to be parsed (like for \textsf, for
// example).
// set back to last selectlanguage
- os << "\n\\lang " << selectlang << "\n";
+ os << "\n\\lang " << context.font.language << "\n";
}
else if (t.cs() == "inputencoding") {
skip_braces(p);
}
+ else if (t.cs() == "textquotedbl") {
+ context.check_layout(os);
+ os << "\"";
+ skip_braces(p);
+ }
+
else if (t.cs() == "@" && p.next_token().asInput() == ".") {
context.check_layout(os);
os << "\\SpecialChar \\@.\n";
}
}
- else if (t.cs() == "newline" ||
- t.cs() == "linebreak") {
+ else if (t.cs() == "newline") {
context.check_layout(os);
os << "\n\\" << t.cs() << "\n";
skip_braces(p); // eat {}
}
if (makeAbsPath(filename, path).exists()) {
string const abstexname =
- makeAbsPath(filename, path).absFilename();
+ makeAbsPath(filename, path).absFileName();
string const abslyxname =
changeExtension(abstexname, ".lyx");
fix_relative_filename(filename);
}
else if (t.cs() == "newpage" ||
- t.cs() == "pagebreak" ||
t.cs() == "clearpage" ||
t.cs() == "cleardoublepage") {
context.check_layout(os);