X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.C;h=418f0b00ee93a359ede077a80459333ad325c2a9;hb=98c966c64594611e469313314abd1e59524adb4a;hp=039beb85faeaf40bebb17e52b3c276243f977817;hpb=bc654756fa0ba50d6df2e99c1c2ef7eb43e6194b;p=lyx.git diff --git a/src/LaTeXFeatures.C b/src/LaTeXFeatures.C index 039beb85fa..418f0b00ee 100644 --- a/src/LaTeXFeatures.C +++ b/src/LaTeXFeatures.C @@ -1,8 +1,8 @@ /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor - * + * * Copyright 1995 Matthias Ettrich * Copyright 1995-2001 the LyX Team. * @@ -28,14 +28,17 @@ #include "support/filetools.h" #include "support/lstrings.h" -using lyx::layout_type; using lyx::textclass_type; using std::endl; using std::set; +using std::vector; +using std::find; +using std::ostream; + -LaTeXFeatures::LaTeXFeatures(BufferParams const & p, layout_type n) - : layout(n, false), params(p) +LaTeXFeatures::LaTeXFeatures(BufferParams const & p) + : params(p) {} @@ -43,27 +46,22 @@ void LaTeXFeatures::require(string const & name) { if (isRequired(name)) return; - - // INSET_GRAPHICS: remove this when InsetFig is thrown. - if (name == "graphics") { - features.push_back("graphicx"); - features.push_back("graphics"); - } else - features.push_back(name); + + features.push_back(name); } -void LaTeXFeatures::useLayout(std::vector::size_type const & idx) +void LaTeXFeatures::useLayout(string const & lyt) { - layout[idx] = true; + layout.insert(lyt); } bool LaTeXFeatures::isRequired(string const & name) const { - FeaturesList::const_iterator i = std::find(features.begin(), - features.end(), - name); + FeaturesList::const_iterator i = find(features.begin(), + features.end(), + name); return i != features.end(); } @@ -93,25 +91,25 @@ void LaTeXFeatures::useLanguage(Language const * lang) } -void LaTeXFeatures::includeFile(string const & key, string const & name) +void LaTeXFeatures::includeFile(string const & key, string const & name) { IncludedFiles[key] = name; } -bool LaTeXFeatures::hasLanguages() +bool LaTeXFeatures::hasLanguages() { return !UsedLanguages.empty(); } -string LaTeXFeatures::getLanguages() const +string LaTeXFeatures::getLanguages() const { ostringstream languages; for (LanguageList::const_iterator cit = UsedLanguages.begin(); - cit != UsedLanguages.end(); + cit != UsedLanguages.end(); ++cit) languages << (*cit)->babel() << ','; @@ -119,7 +117,7 @@ string LaTeXFeatures::getLanguages() const } -set LaTeXFeatures::getEncodingSet(string const & doc_encoding) +set LaTeXFeatures::getEncodingSet(string const & doc_encoding) { set encodings; for (LanguageList::const_iterator it = @@ -131,7 +129,7 @@ set LaTeXFeatures::getEncodingSet(string const & doc_encoding) } namespace { - + char const * simplefeatures[] = { "array", "verbatim", @@ -153,8 +151,7 @@ const int nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *); string const LaTeXFeatures::getPackages() const { ostringstream packages; - LyXTextClass const & tclass = - textclasslist.TextClass(params.textclass); + LyXTextClass const & tclass = textclasslist[params.textclass]; /** @@ -167,7 +164,7 @@ string const LaTeXFeatures::getPackages() const << simplefeatures[i] << "}\n"; } - + /** * The rest of these packages are somewhat more complicated * than those above. @@ -177,17 +174,17 @@ string const LaTeXFeatures::getPackages() const && ! tclass.provides(LyXTextClass::amsmath)) { packages << "\\usepackage{amsmath}\n"; } - + // color.sty if (isRequired("color")) { if (params.graphicsDriver == "default") packages << "\\usepackage{color}\n"; else - packages << "\\usepackage[" + packages << "\\usepackage[" << params.graphicsDriver << "]{color}\n"; } - + // makeidx.sty if (isRequired("makeidx")) { if (! tclass.provides(LyXTextClass::makeidx)) @@ -200,22 +197,11 @@ string const LaTeXFeatures::getPackages() const if (params.graphicsDriver == "default") packages << "\\usepackage{graphicx}\n"; else - packages << "\\usepackage[" + packages << "\\usepackage[" << params.graphicsDriver << "]{graphicx}\n"; } - // INSET_GRAPHICS: remove this when InsetFig is thrown. - // graphics.sty - if (isRequired("graphics") && params.graphicsDriver != "none") { - if (params.graphicsDriver == "default") - packages << "\\usepackage{graphics}\n"; - else - packages << "\\usepackage[" - << params.graphicsDriver - << "]{graphics}\n"; - } - //if (algorithm) { // packages << "\\usepackage{algorithm}\n"; //} @@ -268,7 +254,7 @@ string const LaTeXFeatures::getPackages() const } packages << "]{natbib}\n"; } - + packages << externalPreambles; return packages.str().c_str(); @@ -280,10 +266,10 @@ string const LaTeXFeatures::getMacros() const ostringstream macros; // always include this - if (true || isRequired("lyx")) + if (true || isRequired("lyx")) macros << lyx_def << '\n'; - if (isRequired("lyxline")) + if (isRequired("lyxline")) macros << lyxline_def << '\n'; if (isRequired("noun")) @@ -292,7 +278,7 @@ string const LaTeXFeatures::getMacros() const if (isRequired("lyxarrow")) macros << lyxarrow_def << '\n'; - // quotes. + // quotes. if (isRequired("quotesinglbase")) macros << quotesinglbase_def << '\n'; if (isRequired("quotedblbase")) @@ -305,19 +291,21 @@ string const LaTeXFeatures::getMacros() const macros << guillemotleft_def << '\n'; if (isRequired("guillemotright")) macros << guillemotright_def << '\n'; - - // Math mode + + // Math mode if (isRequired("boldsymbol") && !isRequired("amsmath")) macros << boldsymbol_def << '\n'; if (isRequired("binom") && !isRequired("amsmath")) macros << binom_def << '\n'; + if (isRequired("mathcircumflex")) + macros << mathcircumflex_def << '\n'; // other if (isRequired("NeedLyXMinipageIndent")) macros << minipageindent_def; - if (isRequired("ParagraphIndent")) + if (isRequired("ParagraphIndent")) macros << paragraphindent_def; - if (isRequired("NeedLyXFootnoteCode")) + if (isRequired("NeedLyXFootnoteCode")) macros << floatingfootnote_def; // floats @@ -336,20 +324,20 @@ string const LaTeXFeatures::getMacros() const string const LaTeXFeatures::getTClassPreamble() const { - // the text class specific preamble - LyXTextClass const & tclass = textclasslist.TextClass(params.textclass); + // the text class specific preamble + LyXTextClass const & tclass = textclasslist[params.textclass]; ostringstream tcpreamble; tcpreamble << tclass.preamble(); - for (layout_type i = 0; i < tclass.numLayouts(); ++i) { - if (layout[i]) { - tcpreamble << tclass[i].preamble(); - } + set::const_iterator cit = layout.begin(); + set::const_iterator end = layout.end(); + for (; cit != end; ++cit) { + tcpreamble << tclass[*cit].preamble(); } return tcpreamble.str().c_str(); -} +} string const LaTeXFeatures::getLyXSGMLEntities() const @@ -374,7 +362,7 @@ string const LaTeXFeatures::getIncludedFiles(string const & fname) const for (FileMap::const_iterator fi = IncludedFiles.begin(); fi != end; ++fi) sgmlpreamble << "\nfirst - << (IsSGMLFilename(fi->second) ? " SYSTEM \"" : " \"" ) + << (IsSGMLFilename(fi->second) ? " SYSTEM \"" : " \"") << MakeRelPath(fi->second, basename) << "\">"; return sgmlpreamble.str().c_str(); @@ -395,7 +383,8 @@ BufferParams const & LaTeXFeatures::bufferParams() const return params; } -void LaTeXFeatures::getFloatDefinitions(std::ostream & os) const + +void LaTeXFeatures::getFloatDefinitions(ostream & os) const { // Here we will output the code to create the needed float styles. // We will try to do this as minimal as possible. @@ -407,10 +396,10 @@ void LaTeXFeatures::getFloatDefinitions(std::ostream & os) const // ostringstream floats; for (; cit != end; ++cit) { Floating const & fl = floatList.getType((*cit)); - + // For builtin floats we do nothing. if (fl.builtin()) continue; - + // We have to special case "table" and "figure" if (fl.type() == "tabular" || fl.type() == "figure") { // Output code to modify "table" or "figure" @@ -430,7 +419,7 @@ void LaTeXFeatures::getFloatDefinitions(std::ostream & os) const } } else { // The other non builtin floats. - + string const type = fl.type(); string const placement = fl.placement(); string const ext = fl.ext(); @@ -445,7 +434,7 @@ void LaTeXFeatures::getFloatDefinitions(std::ostream & os) const os << "\n" << "\\floatname{" << type << "}{" << name << "}\n"; - + // What missing here is to code to minimalize the code // output so that the same floatstyle will not be // used several times, when the same style is still in