Author: baum
Date: Sun Nov 13 12:29:48 2011
New Revision: 40184
URL: http://www.lyx.org/trac/changeset/40184
Log:
Fix bug #7668 (cosmetic whitespace issues)
Modified:
lyx-devel/trunk/lib/syntax.default
lyx-devel/trunk/src/tex2lyx/math.cpp
lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp
lyx-devel/trunk/src/tex2lyx/tex2lyx.h
lyx-devel/trunk/src/tex2lyx/text.cpp
Modified: lyx-devel/trunk/lib/syntax.default
==============================================================================
--- lyx-devel/trunk/lib/syntax.default Sun Nov 13 11:43:30 2011 (r40183)
+++ lyx-devel/trunk/lib/syntax.default Sun Nov 13 12:29:48 2011 (r40184)
@@ -703,30 +703,30 @@
% Environments that start math mode.
% $...$, $$...$$, \(...\) and \[...\] are hardcoded in tex2lyx.
-% The arguments are currently ignored.
+% The arguments are currently ignored (apart from displaymath).
\begin{mathenvironments}
-equation
-equation*
-eqnarray
-eqnarray*
-align
-align*
-gather
-gather*
-multline
-multline*
-math
-displaymath
-flalign
-flalign
+equation{displaymath}
+equation*{displaymath}
+eqnarray{displaymath}
+eqnarray*{displaymath}
+align{displaymath}
+align*{displaymath}
+gather{displaymath}
+gather*{displaymath}
+multline{displaymath}
+multline*{displaymath}
+math{}
+displaymath{displaymath}
+flalign{displaymath}
+flalign{displaymath}
% These require extra args
-alignat
-alignat*
-xalignat
-xalignat*
-xxalignat
+alignat{}{displaymath}
+alignat*{displaymath}
+xalignat{}{displaymath}
+xalignat*{}{displaymath}
+xxalignat{}{displaymath}
% These are not known by LyX but work nevertheless:
-empheq
+empheq[]{}{displaymath}
\end{mathenvironments}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Modified: lyx-devel/trunk/src/tex2lyx/math.cpp
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/math.cpp Sun Nov 13 11:43:30 2011
(r40183)
+++ lyx-devel/trunk/src/tex2lyx/math.cpp Sun Nov 13 12:29:48 2011
(r40184)
@@ -27,6 +27,16 @@
}
+bool is_display_math_env(string const & name)
+{
+ CommandMap::const_iterator it = known_math_environments.find(name);
+ if (it != known_math_environments.end())
+ if (!it->second.empty())
+ return it->second.back() == displaymath;
+ return false;
+}
+
+
void parse_math(Parser & p, ostream & os, unsigned flags, const mode_type mode)
{
while (p.good()) {
Modified: lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp Sun Nov 13 11:43:30 2011
(r40183)
+++ lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp Sun Nov 13 12:29:48 2011
(r40184)
@@ -357,6 +357,8 @@
arguments.push_back(required);
else if (arg == "item")
arguments.push_back(item);
+ else if (arg == "displaymath")
+ arguments.push_back(displaymath);
else
arguments.push_back(verbatim);
} else {
Modified: lyx-devel/trunk/src/tex2lyx/tex2lyx.h
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/tex2lyx.h Sun Nov 13 11:43:30 2011
(r40183)
+++ lyx-devel/trunk/src/tex2lyx/tex2lyx.h Sun Nov 13 12:29:48 2011
(r40184)
@@ -84,6 +84,7 @@
char const * delim);
bool is_math_env(std::string const & name);
+bool is_display_math_env(std::string const & name);
char const * const * is_known(std::string const &, char const * const *);
/*!
@@ -117,7 +118,8 @@
required,
verbatim,
item,
- optional
+ optional,
+ displaymath,
};
class FullCommand {
Modified: lyx-devel/trunk/src/tex2lyx/text.cpp
==============================================================================
--- lyx-devel/trunk/src/tex2lyx/text.cpp Sun Nov 13 11:43:30 2011
(r40183)
+++ lyx-devel/trunk/src/tex2lyx/text.cpp Sun Nov 13 12:29:48 2011
(r40184)
@@ -689,6 +689,7 @@
else
ert += p.verbatim_item();
break;
+ case displaymath:
case verbatim:
// This argument may contain special characters
ert += '{' + p.verbatim_item() + '}';
@@ -1157,6 +1158,12 @@
parse_math(p, os, FLAG_END, MATH_MODE);
os << "\\end{" << name << "}";
end_inset(os);
+ if (is_display_math_env(name)) {
+ // Prevent the conversion of a line break to a space
+ // (bug 7668). This does not change the output, but
+ // looks ugly in LyX.
+ eat_whitespace(p, os, parent_context, false);
+ }
}
else if (unstarred_name == "tabular" || name == "longtable") {
@@ -1900,7 +1907,8 @@
context.check_layout(os);
begin_inset(os, "Formula ");
Token const & n = p.get_token();
- if (n.cat() == catMath && outer) {
+ bool const display(n.cat() == catMath && outer);
+ if (display) {
// TeX's $$...$$ syntax for displayed math
os << "\\[";
parse_math(p, os, FLAG_SIMPLE, MATH_MODE);
@@ -1914,6 +1922,12 @@
os << '$';
}
end_inset(os);
+ if (display) {
+ // Prevent the conversion of a line break to a
+ // space (bug 7668). This does not change the
+ // output, but looks ugly in LyX.
+ eat_whitespace(p, os, context, false);
+ }
}
else if (t.cat() == catSuper || t.cat() == catSub)
@@ -2160,6 +2174,10 @@
parse_math(p, os, FLAG_EQUATION, MATH_MODE);
os << "\\]";
end_inset(os);
+ // Prevent the conversion of a line break to a space
+ // (bug 7668). This does not change the output, but
+ // looks ugly in LyX.
+ eat_whitespace(p, os, context, false);
}
else if (t.cs() == "begin")