commit 0c90821138a39366e60127500dcae7151badb9d2
Author: Georg Baum <[email protected]>
Date: Fri Dec 26 21:01:08 2014 +0100
Parse starred InsetLayout correctly
Previously, an InsetLayout was not found if the LaTeX name was starred, e.g.
for "\caption*".
diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp
index fd1499a..6ab1549 100644
--- a/src/tex2lyx/text.cpp
+++ b/src/tex2lyx/text.cpp
@@ -2268,6 +2268,8 @@ void parse_text(Parser & p, ostream & os, unsigned flags,
bool outer,
//
// cat codes
//
+ bool const starred = p.next_token().asInput() == "*";
+ string const starredname(starred ? (t.cs() + '*') : t.cs());
if (t.cat() == catMath) {
// we are inside some text mode thingy, so opening new
math is allowed
context.check_layout(os);
@@ -2824,11 +2826,8 @@ void parse_text(Parser & p, ostream & os, unsigned
flags, bool outer,
else if (t.cs() == "caption" || t.cs() == "captionabove" ||
t.cs() == "captionbelow") {
- bool starred = false;
- if (p.next_token().asInput() == "*") {
+ if (starred)
p.get_token();
- starred = true;
- }
p.skip_spaces();
context.check_layout(os);
p.skip_spaces();
@@ -4336,11 +4335,8 @@ void parse_text(Parser & p, ostream & os, unsigned
flags, bool outer,
}
else if (t.cs() == "hspace" || t.cs() == "vspace") {
- bool starred = false;
- if (p.next_token().asInput() == "*") {
+ if (starred)
p.get_token();
- starred = true;
- }
string name = t.asInput();
string const length = p.verbatim_item();
string unit;
@@ -4474,7 +4470,9 @@ void parse_text(Parser & p, ostream & os, unsigned flags,
bool outer,
}
// The single '=' is meant here.
- else if ((newinsetlayout = findInsetLayout(context.textclass,
t.cs(), true))) {
+ else if ((newinsetlayout = findInsetLayout(context.textclass,
starredname, true))) {
+ if (starred)
+ p.get_token();
p.skip_spaces();
context.check_layout(os);
begin_inset(os, "Flex ");