tex2lyx: support for beamer text styles with overlays

E.g. things like \textbf<article>{foo} have to be imported as insets.

Part of #11068
This commit is contained in:
Juergen Spitzmueller 2018-03-14 14:38:18 +01:00
parent e51265b5f3
commit c74e399981
3 changed files with 10 additions and 7 deletions

View 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: // An optional argument can occur in any of the following forms:
// - \foo[bar] // - \foo[bar]
@ -479,7 +479,7 @@ bool Parser::hasOpt()
putback(); putback();
break; break;
} }
bool const retval = (next_token().asInput() == "["); bool const retval = (next_token().asInput() == l);
pos_ = oldpos; pos_ = oldpos;
return retval; return retval;
} }

View File

@ -214,7 +214,7 @@ public:
void dump() const; void dump() const;
/// Does an optional argument follow after the current token? /// Does an optional argument follow after the current token?
bool hasOpt(); bool hasOpt(std::string const l = "[");
/// ///
typedef std::pair<bool, std::string> Arg; typedef std::pair<bool, std::string> Arg;
/*! /*!

View File

@ -3646,14 +3646,16 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
continue; 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, parse_text_attributes(p, os, FLAG_ITEM, outer,
context, "\\series", context.font.series, context, "\\series", context.font.series,
known_coded_font_series[where - known_text_font_series]); known_coded_font_series[where - known_text_font_series]);
continue; 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, parse_text_attributes(p, os, FLAG_ITEM, outer,
context, "\\shape", context.font.shape, context, "\\shape", context.font.shape,
known_coded_font_shapes[where - known_text_font_shapes]); known_coded_font_shapes[where - known_text_font_shapes]);
@ -3732,9 +3734,10 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
continue; 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() == "emph" || t.cs() == "noun"
|| t.cs() == "xout") { || t.cs() == "xout") && !p.hasOpt("<")) {
context.check_layout(os); context.check_layout(os);
os << "\n\\" << t.cs() << " on\n"; os << "\n\\" << t.cs() << " on\n";
parse_text_snippet(p, os, FLAG_ITEM, outer, context); parse_text_snippet(p, os, FLAG_ITEM, outer, context);