tex2lyx: fix subfloat import

Fixes: #10385
(cherry picked from commit 1dcb2a0976)
This commit is contained in:
Juergen Spitzmueller 2018-03-06 10:35:55 +01:00
parent 566f368885
commit 94fe126161
2 changed files with 18 additions and 17 deletions

View File

@ -3176,7 +3176,6 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
if (t.cs() == "subfloat") { if (t.cs() == "subfloat") {
// the syntax is \subfloat[list entry][sub caption]{content} // the syntax is \subfloat[list entry][sub caption]{content}
// if it is a table of figure depends on the surrounding float // if it is a table of figure depends on the surrounding float
// FIXME: second optional argument is not parsed
p.skip_spaces(); p.skip_spaces();
// do nothing if there is no outer float // do nothing if there is no outer float
if (!float_type.empty()) { if (!float_type.empty()) {
@ -3195,6 +3194,12 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
caption = parse_text_snippet(p, FLAG_BRACK_LAST, outer, context); caption = parse_text_snippet(p, FLAG_BRACK_LAST, outer, context);
has_caption = true; has_caption = true;
} }
// In case we have two optional args, the second is the caption.
if (p.next_token().cat() != catEscape &&
p.next_token().character() == '[') {
p.get_token(); // eat '['
caption = parse_text_snippet(p, FLAG_BRACK_LAST, outer, context);
}
// the content // the content
parse_text_in_inset(p, os, FLAG_ITEM, outer, context); parse_text_in_inset(p, os, FLAG_ITEM, outer, context);
// the caption comes always as the last // the caption comes always as the last
@ -3208,31 +3213,25 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
newcontext.check_layout(os); newcontext.check_layout(os);
os << caption << "\n"; os << caption << "\n";
newcontext.check_end_layout(os); newcontext.check_end_layout(os);
// We don't need really a new paragraph, but
// we must make sure that the next item gets a \begin_layout.
//newcontext.new_paragraph(os);
end_inset(os); end_inset(os);
p.skip_spaces(); p.skip_spaces();
}
// We don't need really a new paragraph, but
// we must make sure that the next item gets a \begin_layout.
if (has_caption)
context.new_paragraph(os);
end_inset(os);
p.skip_spaces();
context.check_end_layout(os);
// close the layout we opened // close the layout we opened
if (has_caption) os << "\n\\end_layout";
os << "\n\\end_layout\n"; }
end_inset(os);
p.skip_spaces();
} else { } else {
// if the float type is not supported or there is no surrounding float // if the float type is not supported or there is no surrounding float
// output it as ERT // output it as ERT
string opt_arg1;
string opt_arg2;
if (p.hasOpt()) { if (p.hasOpt()) {
string opt_arg = convert_command_inset_arg(p.getArg('[', ']')); opt_arg1 = convert_command_inset_arg(p.getFullOpt());
output_ert_inset(os, t.asInput() + '[' + opt_arg + if (p.hasOpt())
"]{" + p.verbatim_item() + '}', context); opt_arg2 = convert_command_inset_arg(p.getFullOpt());
} else }
output_ert_inset(os, t.asInput() + "{" + p.verbatim_item() + '}', context); output_ert_inset(os, t.asInput() + opt_arg1 + opt_arg2
+ "{" + p.verbatim_item() + '}', context);
} }
continue; continue;
} }

View File

@ -97,6 +97,8 @@ What's new
* TEX2LYX * TEX2LYX
- Fix import of subfloats without caption (bug 10385).
- Import straight quotations marks (e.g. babel shorthands) as ERT (bug 75). - Import straight quotations marks (e.g. babel shorthands) as ERT (bug 75).
- Consider options passed via \PassOptionsToPackage. - Consider options passed via \PassOptionsToPackage.