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 ");

Reply via email to