From: Georg Baum Date: Thu, 24 Aug 2006 16:34:47 +0000 (+0000) Subject: Fix bug 2786: import of spaces X-Git-Tag: 1.6.10~12696 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=d6a42972eaa844f435ddf691844808c23c145f75;p=features.git Fix bug 2786: import of spaces * src/tex2lyx/text.C (known_spaces): new, LaTeX names of known spaces (known_coded_spaces): new, LyX names of known spaces (parse_text): Recognize all known spaces git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@14832 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/tex2lyx/text.C b/src/tex2lyx/text.C index bbcfa593f0..46cc894565 100644 --- a/src/tex2lyx/text.C +++ b/src/tex2lyx/text.C @@ -198,6 +198,15 @@ char const * const known_pdftex_graphics_formats[] = {"png", "pdf", "jpg", */ char const * const known_tex_extensions[] = {"tex", 0}; +/// spaces known by InsetSpace +char const * const known_spaces[] = { " ", "space", ",", "thinspace", "quad", +"qquad", "enspace", "enskip", "negthinspace", 0}; + +/// the same as known_spaces with .lyx names +char const * const known_coded_spaces[] = { "space{}", "space{}", +"thinspace{}", "thinspace{}", "quad{}", "qquad{}", "enspace{}", "enskip{}", +"negthinspace{}", 0}; + /// splits "x=z, y=b" into a map map split_map(string const & s) @@ -2184,6 +2193,25 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer, skip_braces(p); } + else if (is_known(t.cs(), known_spaces)) { + char const * const * where = is_known(t.cs(), known_spaces); + context.check_layout(os); + begin_inset(os, "InsetSpace "); + os << '\\' << known_coded_spaces[where - known_spaces] + << '\n'; + // LaTeX swallows whitespace after all spaces except + // "\\,". We have to do that here, too, because LyX + // adds "{}" which would make the spaces significant. + if (t.cs() != ",") + eat_whitespace(p, os, context, false); + // LyX adds "{}" after all spaces except "\\ " and + // "\\,", so we have to remove "{}". + // "\\,{}" is equivalent to "\\," in LaTeX, so we + // remove the braces after "\\,", too. + if (t.cs() != " ") + skip_braces(p); + } + else if (t.cs() == "newpage") { context.check_layout(os); // FIXME: what about \\clearpage and \\pagebreak?