]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
The logic of the endParagraph() routine is wrong. We should first
[lyx.git] / src / LaTeXFeatures.cpp
index c6955eb0d3561984b0b2e3076173b6fff2f099cf..f1d315cae84e3341ebea09efdff2715cce1b9aeb 100644 (file)
@@ -576,6 +576,7 @@ char const * simplefeatures[] = {
        "mathrsfs",
        "mathabx",
        "mathtools",
+       "cancel",
        "ascii",
        "url",
        "covington",
@@ -1153,9 +1154,17 @@ docstring const LaTeXFeatures::getTClassHTMLStyles() const
 namespace {
 docstring const getFloatI18nPreamble(docstring const & type,
                        docstring const & name, Language const * lang,
-                       Encoding const & enc, bool const polyglossia,
-                       bool const unicode)
+                       Encoding const & enc, bool const polyglossia)
 {
+       // Check whether name can be encoded in the buffer encoding
+       bool encodable = true;
+       for (size_t i = 0; i < name.size(); ++i) {
+               if (!enc.encodable(name[i])) {
+                       encodable = false;
+                       break;
+               }
+       }
+
        docstring const language = polyglossia ? from_ascii(lang->polyglossia())
                                               : from_ascii(lang->babel());
        docstring const langenc = from_ascii(lang->encoding()->iconvName());
@@ -1163,7 +1172,7 @@ docstring const getFloatI18nPreamble(docstring const & type,
        docstring const bufenc = from_ascii(enc.iconvName());
        docstring const s1 = docstring(1, 0xF0000);
        docstring const s2 = docstring(1, 0xF0001);
-       docstring const translated = (unicode || langenc == bufenc) ? name
+       docstring const translated = encodable ? name
                : from_ascii("\\inputencoding{") + texenc + from_ascii("}")
                        + s1 + langenc + s2 + name + s1 + bufenc + s2;
 
@@ -1190,21 +1199,18 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po
                // language dependent commands (once per document)
                snippets.insert(tclass[*cit].langpreamble(buffer().language(),
                                                buffer().params().encoding(),
-                                               use_polyglossia,
-                                               runparams().isFullUnicode()));
+                                               use_polyglossia));
                // commands for language changing (for multilanguage documents)
                if ((use_babel || use_polyglossia) && !UsedLanguages_.empty()) {
                        snippets.insert(tclass[*cit].babelpreamble(
                                                buffer().language(),
                                                buffer().params().encoding(),
-                                               use_polyglossia,
-                                               runparams().isFullUnicode()));
+                                               use_polyglossia));
                        for (lang_it lit = lbeg; lit != lend; ++lit)
                                snippets.insert(tclass[*cit].babelpreamble(
                                                *lit,
                                                buffer().params().encoding(),
-                                               use_polyglossia,
-                                               runparams().isFullUnicode()));
+                                               use_polyglossia));
                }
        }
        if ((use_babel || use_polyglossia) && !UsedLanguages_.empty()) {
@@ -1225,8 +1231,7 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po
                                snippets.insert(getFloatI18nPreamble(
                                                type, name, buffer().language(),
                                                buffer().params().encoding(),
-                                               use_polyglossia,
-                                               runparams().isFullUnicode()));
+                                               use_polyglossia));
                        for (lang_it lit = lbeg; lit != lend; ++lit) {
                                string const code = (*lit)->code();
                                name = (*lit)->translateLayout(fl.name());
@@ -1241,8 +1246,7 @@ docstring const LaTeXFeatures::getTClassI18nPreamble(bool use_babel, bool use_po
                                        snippets.insert(getFloatI18nPreamble(
                                                type, name, *lit,
                                                buffer().params().encoding(),
-                                               use_polyglossia,
-                                               runparams().isFullUnicode()));
+                                               use_polyglossia));
                        }
                }
        }