From 0c90821138a39366e60127500dcae7151badb9d2 Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Fri, 26 Dec 2014 21:01:08 +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 fd1499afbb..6ab1549702 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 "); -- 2.39.5