X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftex2lyx%2Fmath.C;h=ea3cc9d4e03374e0718bf74127466452b611aa73;hb=d68ec289063394f24296ee098f5113e9242f2b0b;hp=f70ac09651a579221dd6d5fa3ff52592b97e4ad5;hpb=0be0fcfd5907d448cd51addf83ed7032719a0692;p=lyx.git diff --git a/src/tex2lyx/math.C b/src/tex2lyx/math.C index f70ac09651..ea3cc9d4e0 100644 --- a/src/tex2lyx/math.C +++ b/src/tex2lyx/math.C @@ -15,20 +15,22 @@ #include "tex2lyx.h" #include -#include using std::cerr; using std::endl; + using std::ostream; using std::string; -using std::vector; bool is_math_env(string const & name) { static char const * known_math_envs[] = { "equation", "equation*", "eqnarray", "eqnarray*", "align", "align*", "gather", "gather*", - "multline", "multline*", 0}; + "multline", "multline*", "math", "displaymath", "flalign", "flalign*", + // These require extra args + "alignat", "alignat*", "xalignat", "xalignat*", "xxalignat", + 0}; for (char const ** what = known_math_envs; *what; ++what) if (*what == name) @@ -98,7 +100,6 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) } else if (t.cat() == catLetter || - t.cat() == catSpace || t.cat() == catSuper || t.cat() == catSub || t.cat() == catOther || @@ -107,15 +108,6 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) t.cat() == catParameter) os << t.character(); - else if (t.cat() == catNewline) { - //if (p.next_token().cat() == catNewline) { - // p.get_token(); - // handle_par(os); - //} else { - os << "\n "; // note the space - //} - } - else if (t.cat() == catBegin) { os << '{'; parse_math(p, os, FLAG_BRACE_LAST, mode); @@ -128,8 +120,13 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) os << "unexpected '}' in math\n"; } - else if (t.cat() == catComment) - handle_comment(p); + else if (t.cat() == catComment) { + if (!t.cs().empty()) + cerr << "Ignoring comment: " << t.asInput(); + else + // "%\n" combination + p.skip_spaces(); + } // // control sequences @@ -144,7 +141,7 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) else if (t.cs() == "[") { // special handling of a few common SW user quirks p.skip_spaces(); - //if (p.next_token().cs() == + //if (p.next_token().cs() == os << "\\["; parse_math(p, os, FLAG_EQUATION, MATH_MODE); os << "\\]"; @@ -163,6 +160,7 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) else parse_math(p, os, FLAG_END, mode); os << "\\end{" << name << "}"; + active_environments.pop_back(); } else if (t.cs() == "end") { @@ -172,7 +170,6 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) if (name != active_environment()) p.error("\\end{" + name + "} does not match \\begin{" + active_environment() + "}"); - active_environments.pop_back(); return; } p.error("found 'end' unexpectedly"); @@ -191,14 +188,15 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) } else if (t.cs() == "textrm" || t.cs() == "textsf" || t.cs() == "textbf" - || t.cs() == "texttt" || t.cs() == "textsc") { + || t.cs() == "texttt" || t.cs() == "textsc" + || t.cs() == "text" || t.cs() == "intertext") { os << '\\' << t.cs() << '{'; parse_math(p, os, FLAG_ITEM, MATHTEXT_MODE); os << '}'; } - else if (t.cs() == "mbox") { - os << "\\mbox{"; + else if (t.cs() == "mbox" || t.cs() == "fbox") { + os << "\\" << t.cs() << '{'; parse_math(p, os, FLAG_ITEM, MATHTEXT_MODE); os << '}'; } @@ -217,7 +215,7 @@ void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode) else if (t.cs() == "ss") os << "ß"; - else + else os << t.asInput(); if (flags & FLAG_LEAVE) {