commit 42f36c1b94e055421bcbfdcdf5acfce772cd71b4
Author: Georg Baum <[email protected]>
Date:   Sat Jan 3 17:39:20 2015 +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 9152360..fe6a8a3 100644
--- a/src/tex2lyx/text.cpp
+++ b/src/tex2lyx/text.cpp
@@ -2285,6 +2285,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);
@@ -2840,11 +2842,8 @@ void parse_text(Parser & p, ostream & os, unsigned 
flags, bool outer,
                }
 
                else if (t.cs() == "caption") {
-                       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();
@@ -4348,11 +4347,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;
@@ -4486,7 +4482,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