]> git.lyx.org Git - lyx.git/blobdiff - src/bufferparams.C
* support/qstring_helpers.h: erase ucs4_to_qstring() method.
[lyx.git] / src / bufferparams.C
index 856fa185eee872db815f24d2f5adcaa5021c188b..d7e58ef4d7cf6d3351cf5dc8703ae7b0a827fe94 100644 (file)
@@ -236,9 +236,18 @@ SpaceTranslator const & spacetranslator()
        return translator;
 }
 
-// ends annonym namespace
+
+textclass_type defaultTextclass()
+{
+       // Initialize textclass to point to article. if `first' is
+       // true in the returned pair, then `second' is the textclass
+       // number; if it is false, second is 0. In both cases, second
+       // is what we want.
+       return textclasslist.numberOfClass("article").second;
 }
 
+} // anon namespace
+
 
 class BufferParams::Impl
 {
@@ -261,7 +270,8 @@ BufferParams::Impl::Impl()
        : defskip(VSpace::MEDSKIP)
 {
        // set initial author
-       authorlist.record(Author(lyxrc.user_name, lyxrc.user_email));
+       // FIXME UNICODE
+       authorlist.record(Author(from_utf8(lyxrc.user_name), from_utf8(lyxrc.user_email)));
 }
 
 
@@ -281,12 +291,7 @@ void BufferParams::MemoryTraits::destroy(BufferParams::Impl * ptr)
 
 
 BufferParams::BufferParams()
-       : // Initialize textclass to point to article. if `first' is
-         // true in the returned pair, then `second' is the textclass
-         // number; if it is false, second is 0. In both cases, second
-         // is what we want.
-       textclass(textclasslist.numberOfClass("article").second),
-       pimpl_(new Impl)
+       : textclass(defaultTextclass()), pimpl_(new Impl)
 {
        paragraph_separation = PARSEP_INDENT;
        quotes_language = InsetQuotes::EnglishQ;
@@ -421,7 +426,7 @@ string const BufferParams::readToken(LyXLex & lex, string const & token)
                        if (pp.first) {
                                textclass = pp.second;
                        } else {
-                               textclass = 0;
+                               textclass = defaultTextclass();
                                return classname;
                        }
                }
@@ -824,7 +829,7 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
 
        // font selection must be done before loading fontenc.sty
        string const fonts =
-               loadFonts(features, fontsRoman, fontsSans,
+               loadFonts(fontsRoman, fontsSans,
                          fontsTypewriter, fontsSC, fontsOSF,
                          fontsSansScale, fontsTypewriterScale);
        if (!fonts.empty()) {
@@ -850,14 +855,29 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                std::set<string> encodings =
                        features.getEncodingSet(doc_encoding);
 
-               os << "\\usepackage[";
-               std::set<string>::const_iterator it = encodings.begin();
-               std::set<string>::const_iterator const end = encodings.end();
-               for (; it != end; ++it)
-                       os << from_ascii(*it) << ',';
-               os << from_ascii(doc_encoding) << "]{inputenc}\n";
-               texrow.newline();
-       } else if (inputenc != "default") {
+               // thailatex does not use the inputenc package, but sets up
+               // babel directly for tis620-0 encoding, therefore we must
+               // not request inputenc for tis620-0 encoding
+               if (!encodings.empty() || doc_encoding != "tis620-0") {
+                       os << "\\usepackage[";
+                       std::set<string>::const_iterator it = encodings.begin();
+                       std::set<string>::const_iterator const end = encodings.end();
+                       if (it != end) {
+                               os << from_ascii(*it);
+                               ++it;
+                       }
+                       for (; it != end; ++it)
+                               os << ',' << from_ascii(*it);
+                       if (doc_encoding != "tis620-0") {
+                               if (!encodings.empty())
+                                       os << ',';
+                               os << from_ascii(doc_encoding);
+                       }
+                       os << "]{inputenc}\n";
+                       texrow.newline();
+               }
+       } else if (inputenc != "default" && inputenc != "tis620-0" &&
+                  inputenc != "ascii") {
                os << "\\usepackage[" << from_ascii(inputenc)
                   << "]{inputenc}\n";
                texrow.newline();
@@ -983,26 +1003,26 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
        if (paragraph_separation) {
                switch (getDefSkip().kind()) {
                case VSpace::SMALLSKIP:
-                       os << "\\setlength\\parskip{\\smallskipamount}\n";
+                       os << "\\setlength{\\parskip}{\\smallskipamount}\n";
                        break;
                case VSpace::MEDSKIP:
-                       os << "\\setlength\\parskip{\\medskipamount}\n";
+                       os << "\\setlength{\\parskip}{\\medskipamount}\n";
                        break;
                case VSpace::BIGSKIP:
-                       os << "\\setlength\\parskip{\\bigskipamount}\n";
+                       os << "\\setlength{\\parskip}{\\bigskipamount}\n";
                        break;
                case VSpace::LENGTH:
-                       os << "\\setlength\\parskip{"
+                       os << "\\setlength{\\parskip}{"
                           << from_utf8(getDefSkip().length().asLatexString())
                           << "}\n";
                        break;
                default: // should never happen // Then delete it.
-                       os << "\\setlength\\parskip{\\medskipamount}\n";
+                       os << "\\setlength{\\parskip}{\\medskipamount}\n";
                        break;
                }
                texrow.newline();
 
-               os << "\\setlength\\parindent{0pt}\n";
+               os << "\\setlength{\\parindent}{0pt}\n";
                texrow.newline();
        }
 
@@ -1312,7 +1332,7 @@ string const BufferParams::babelCall(string const & lang_opts) const
 }
 
 
-string const BufferParams::loadFonts(LaTeXFeatures & features, string const & rm,
+string const BufferParams::loadFonts(string const & rm,
                                     string const & sf, string const & tt,
                                     bool const & sc, bool const & osf,
                                     int const & sfscale, int const & ttscale) const
@@ -1356,9 +1376,9 @@ string const BufferParams::loadFonts(LaTeXFeatures & features, string const & rm
        // Times
        else if (rm == "times") {
                // try to load the best available package
-               if (features.isAvailable("mathptmx"))
+               if (LaTeXFeatures::isAvailable("mathptmx"))
                        os << "\\usepackage{mathptmx}\n";
-               else if (features.isAvailable("mathptm"))
+               else if (LaTeXFeatures::isAvailable("mathptm"))
                        os << "\\usepackage{mathptm}\n";
                else
                        os << "\\usepackage{times}\n";
@@ -1366,7 +1386,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features, string const & rm
        // Palatino
        else if (rm == "palatino") {
                // try to load the best available package
-               if (features.isAvailable("mathpazo")) {
+               if (LaTeXFeatures::isAvailable("mathpazo")) {
                        os << "\\usepackage";
                        if (osf || sc) {
                                os << '[';
@@ -1379,7 +1399,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features, string const & rm
                        }
                        os << "{mathpazo}\n";
                }
-               else if (features.isAvailable("mathpple"))
+               else if (LaTeXFeatures::isAvailable("mathpple"))
                        os << "\\usepackage{mathpple}\n";
                else
                        os << "\\usepackage{palatino}\n";
@@ -1388,7 +1408,7 @@ string const BufferParams::loadFonts(LaTeXFeatures & features, string const & rm
        else if (rm == "utopia") {
                // fourier supersedes utopia.sty, but does
                // not work with OT1 encoding.
-               if (features.isAvailable("fourier")
+               if (LaTeXFeatures::isAvailable("fourier")
                    && lyxrc.fontenc != "default") {
                        os << "\\usepackage";
                        if (osf || sc) {
@@ -1451,9 +1471,10 @@ string const BufferParams::loadFonts(LaTeXFeatures & features, string const & rm
 
 Encoding const & BufferParams::encoding() const
 {
-       if (inputenc == "auto")
+       if (inputenc == "auto" || inputenc == "default")
                return *(language->encoding());
-       Encoding const * const enc = encodings.getFromLaTeXName(inputenc);
+       Encoding const * const enc =
+               encodings.getFromLaTeXName(inputenc);
        if (enc)
                return *enc;
        lyxerr << "Unknown inputenc value `" << inputenc