From 42f36c1b94e055421bcbfdcdf5acfce772cd71b4 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Sat, 3 Jan 2015 17:39:20 +0100 Subject: [PATCH] Parse starred InsetLayout correctly Previously, an InsetLayout was not found if the LaTeX name was starred, e.g. for "\caption*". --- src/tex2lyx/text.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp index 9152360cfb..fe6a8a30e1 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 "); -- 2.39.5