char const * const known_ref_commands[] = { "ref", "pageref", "vref",
- "vpageref", "prettyref", "eqref", 0 };
+ "vpageref", "prettyref", "nameref", "eqref", 0 };
char const * const known_coded_ref_commands[] = { "ref", "pageref", "vref",
- "vpageref", "formatted", "eqref", 0 };
+ "vpageref", "formatted", "nameref", "eqref", 0 };
char const * const known_refstyle_commands[] = { "algref", "chapref", "corref",
"eqref", "enuref", "figref", "fnref", "lemref", "parref", "partref", "propref",
width_unit = "in";
width_special = "width";
} else if (latex_width.empty() && outer_type == "framebox") {
- outer_type == "fbox";
- width_value = "-999";
- width_unit = "col%";
+ width_value.clear();
+ width_unit.clear();
width_special = "none";
}
if (use_ert) {
else
os << "use_makebox " << (inner_type == "makebox") << '\n';
if (outer_type == "fbox" || outer_type == "mbox")
- os << "width \"-999col%\"\n";
+ os << "width \"\"\n";
else
os << "width \"" << width_value << width_unit << "\"\n";
os << "special \"" << width_special << "\"\n";
preamble.registerAutomaticallyLoadedPackage("color");
}
+ else if (name == "btSect") {
+ eat_whitespace(p, os, parent_context, false);
+ parent_context.check_layout(os);
+ begin_command_inset(os, "bibtex", "bibtex");
+ string bibstyle = "plain";
+ if (p.hasOpt()) {
+ bibstyle = p.getArg('[', ']');
+ p.skip_spaces(true);
+ }
+ string const bibfile = p.getArg('{', '}');
+ eat_whitespace(p, os, parent_context, false);
+ Token t = p.get_token();
+ if (t.asInput() == "\\btPrintCited") {
+ p.skip_spaces(true);
+ os << "btprint " << '"' << "btPrintCited" << '"' << "\n";
+ }
+ if (t.asInput() == "\\btPrintNotCited") {
+ p.skip_spaces(true);
+ os << "btprint " << '"' << "btPrintNotCited" << '"' << "\n";
+ }
+ if (t.asInput() == "\\btPrintAll") {
+ p.skip_spaces(true);
+ os << "btprint " << '"' << "btPrintAll" << '"' << "\n";
+ }
+ os << "bibfiles " << '"' << bibfile << '"' << "\n";
+ os << "options " << '"' << bibstyle << '"' << "\n";
+ parse_text_in_inset(p, os, FLAG_END, outer, parent_context);
+ end_inset(os);
+ p.skip_spaces();
+ }
+
else if (name == "framed" || name == "shaded") {
eat_whitespace(p, os, parent_context, false);
parse_outer_box(p, os, FLAG_END, outer, parent_context, name, "");
if (last_env == name) {
// we need to output a separator since LyX would export
// the two environments as one otherwise (bug 5716)
- docstring const sep = from_ascii("--Separator--");
TeX2LyXDocClass const & textclass(parent_context.textclass);
- if (textclass.hasLayout(sep)) {
- Context newcontext(parent_context);
- newcontext.layout = &(textclass[sep]);
- newcontext.check_layout(os);
- newcontext.check_end_layout(os);
- } else {
- parent_context.check_layout(os);
- begin_inset(os, "Note Note\n");
- os << "status closed\n";
- Context newcontext(true, textclass,
- &(textclass.defaultLayout()));
- newcontext.check_layout(os);
- newcontext.check_end_layout(os);
- end_inset(os);
- parent_context.check_end_layout(os);
- }
+ Context newcontext(true, textclass,
+ &(textclass.defaultLayout()));
+ newcontext.check_layout(os);
+ begin_inset(os, "Separator plain\n");
+ end_inset(os);
+ newcontext.check_end_layout(os);
}
switch (context.layout->latextype) {
case LATEX_LIST_ENVIRONMENT:
}
-/// Parse a NoWeb Chunk section. The initial "<<" is already parsed.
-bool parse_noweb(Parser & p, ostream & os, Context & context)
+/// Parse a literate Chunk section. The initial "<<" is already parsed.
+bool parse_chunk(Parser & p, ostream & os, Context & context)
{
// check whether a chunk is possible here.
- if (!context.new_layout_allowed ||
- !context.textclass.hasLayout(from_ascii("Chunk"))) {
+ if (!context.textclass.hasInsetLayout(from_ascii("Flex:Chunk"))) {
return false;
}
p.pushPosition();
// read the parameters
- Parser::Arg stuff = p.verbatimStuff(">>=", false);
- if (!stuff.first) {
+ Parser::Arg const params = p.verbatimStuff(">>=\n", false);
+ if (!params.first) {
p.popPosition();
return false;
}
- string chunk = "<<" + stuff.second + ">>="
- + p.verbatimStuff("\n").second + '\n';
- stuff = p.verbatimStuff("\n@");
- if (!stuff.first) {
+ Parser::Arg const code = p.verbatimStuff("\n@");
+ if (!code.first) {
p.popPosition();
return false;
}
- chunk += stuff.second + "\n@";
- string post_chunk = p.verbatimStuff("\n").second + '\n';
+ string const post_chunk = p.verbatimStuff("\n").second + '\n';
if (post_chunk[0] != ' ' && post_chunk[0] != '\n') {
p.popPosition();
return false;
}
- chunk += post_chunk;
+ // The last newline read is important for paragraph handling
+ p.putback();
+ p.deparse();
- context.new_paragraph(os);
- Context newcontext(true, context.textclass,
- &context.textclass[from_ascii("Chunk")]);
- output_ert(os, chunk, newcontext);
+ //cerr << "params=[" << params.second << "], code=[" << code.second << "]" <<endl;
+ // We must have a valid layout before outputting the Chunk inset.
+ context.check_layout(os);
+ Context chunkcontext(true, context.textclass);
+ chunkcontext.layout = &context.textclass.plainLayout();
+ begin_inset(os, "Flex Chunk");
+ os << "\nstatus open\n";
+ if (!params.second.empty()) {
+ chunkcontext.check_layout(os);
+ Context paramscontext(true, context.textclass);
+ paramscontext.layout = &context.textclass.plainLayout();
+ begin_inset(os, "Argument 1");
+ os << "\nstatus open\n";
+ output_ert(os, params.second, paramscontext);
+ end_inset(os);
+ }
+ output_ert(os, code.second, chunkcontext);
+ end_inset(os);
p.dropPosition();
return true;
else if (t.asInput() == "<"
&& p.next_token().asInput() == "<") {
- bool has_noweb = false;
+ bool has_chunk = false;
if (noweb_mode) {
p.pushPosition();
p.get_token();
- has_noweb = parse_noweb(p, os, context);
- if (!has_noweb)
+ has_chunk = parse_chunk(p, os, context);
+ if (!has_chunk)
p.popPosition();
}
- if (!has_noweb) {
+ if (!has_chunk) {
context.check_layout(os);
begin_inset(os, "Quotes ");
//FIXME: this is a right danish quote;
}
if (optarg) {
if (context.layout->labeltype != LABEL_MANUAL) {
- // LyX does not support \item[\mybullet]
- // in itemize environments
+ // handle option of itemize item
+ begin_inset(os, "Argument item:1\n");
+ os << "status open\n";
+ os << "\n\\begin_layout Plain Layout\n";
Parser p2(s + ']');
os << parse_text_snippet(p2,
FLAG_BRACK_LAST, outer, context);
+ // we must not use context.check_end_layout(os)
+ // because that would close the outer itemize layout
+ os << "\n\\end_layout\n";
+ end_inset(os);
+ eat_whitespace(p, os, context, false);
} else if (!s.empty()) {
// LyX adds braces around the argument,
// so we need to remove them here.
} else {
Parser p2(s + ']');
os << parse_text_snippet(p2,
- FLAG_BRACK_LAST,
- outer, context);
+ FLAG_BRACK_LAST, outer, context);
}
// The space is needed to separate the
// item from the rest of the sentence.
string const absfigname =
changeExtension(abstexname, ".fig");
fix_child_filename(filename);
- string const lyxname =
- changeExtension(filename, ".lyx");
+ string const lyxname = changeExtension(filename,
+ roundtripMode() ? ".lyx.lyx" : ".lyx");
string const abslyxname = makeAbsPath(
lyxname, getParentFilePath(false)).absFileName();
bool xfig = false;