]> git.lyx.org Git - features.git/commitdiff
tex2lyx: support for beamer text styles with overlays
authorJuergen Spitzmueller <spitz@lyx.org>
Wed, 14 Mar 2018 13:38:18 +0000 (14:38 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 17 Mar 2018 12:49:33 +0000 (13:49 +0100)
E.g. things like \textbf<article>{foo} have to be imported as insets.

Part of #11068

(cherry picked from commit c74e3999812dfdff3cb6d20ef460dfca1f17c879)

src/tex2lyx/Parser.cpp
src/tex2lyx/Parser.h
src/tex2lyx/text.cpp

index 6e29623b960fffdf1387bf49832ecb7de647ff8d..1d506a78a8616ab3c7620542dfc9bb01a3ff4675 100644 (file)
@@ -453,7 +453,7 @@ bool Parser::good()
 }
 
 
-bool Parser::hasOpt()
+bool Parser::hasOpt(string const l)
 {
        // An optional argument can occur in any of the following forms:
        // - \foo[bar]
@@ -479,7 +479,7 @@ bool Parser::hasOpt()
                putback();
                break;
        }
-       bool const retval = (next_token().asInput() == "[");
+       bool const retval = (next_token().asInput() == l);
        pos_ = oldpos;
        return retval;
 }
index 08d07c1af1d6f960a6d4fc291929de61fc50c96e..83fa1c745a2ae59c3905314295926bf2d6c07c10 100644 (file)
@@ -214,7 +214,7 @@ public:
        void dump() const;
 
        /// Does an optional argument follow after the current token?
-       bool hasOpt();
+       bool hasOpt(std::string const l = "[");
        ///
        typedef std::pair<bool, std::string> Arg;
        /*!
index ac2bed15120962fedff59dba47f6b80e50046b29..f3617a8e97cdf3ecde8da1ef76ebd5407976fd83 100644 (file)
@@ -3627,14 +3627,16 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
                        continue;
                }
 
-               if ((where = is_known(t.cs(), known_text_font_series))) {
+               // beamer has a \textbf<overlay>{} inset
+               if (!p.hasOpt("<") && (where = is_known(t.cs(), known_text_font_series))) {
                        parse_text_attributes(p, os, FLAG_ITEM, outer,
                                context, "\\series", context.font.series,
                                known_coded_font_series[where - known_text_font_series]);
                        continue;
                }
 
-               if ((where = is_known(t.cs(), known_text_font_shapes))) {
+               // beamer has a \textit<overlay>{} inset
+               if (!p.hasOpt("<") && (where = is_known(t.cs(), known_text_font_shapes))) {
                        parse_text_attributes(p, os, FLAG_ITEM, outer,
                                context, "\\shape", context.font.shape,
                                known_coded_font_shapes[where - known_text_font_shapes]);
@@ -3713,9 +3715,10 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
                        continue;
                }
 
-               if (t.cs() == "uuline" || t.cs() == "uwave"
+               // beamer has an \emph<overlay>{} inset
+               if ((t.cs() == "uuline" || t.cs() == "uwave"
                        || t.cs() == "emph" || t.cs() == "noun"
-                       || t.cs() == "xout") {
+                       || t.cs() == "xout") && !p.hasOpt("<")) {
                        context.check_layout(os);
                        os << "\n\\" << t.cs() << " on\n";
                        parse_text_snippet(p, os, FLAG_ITEM, outer, context);