X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxtextclass.C;h=a84fdea8b2bcc0ac042341c4008c5ebcd83e9993;hb=06f9f0ea08ddcf13e99ea02cff21471aa2020c9e;hp=7f6a668ff464adfee5de6161a4246f86ccfaf8d6;hpb=97ffd5e9342d60f84f032713029d71b1eb9ac190;p=lyx.git diff --git a/src/lyxtextclass.C b/src/lyxtextclass.C index 7f6a668ff4..a84fdea8b2 100644 --- a/src/lyxtextclass.C +++ b/src/lyxtextclass.C @@ -1,8 +1,8 @@ /* This file is part of - * ====================================================== - * + * ====================================================== + * * LyX, The Document Processor - * + * * Copyright 1995 Matthias Ettrich * Copyright 1995-2001 The LyX Team. * @@ -69,7 +69,7 @@ bool LyXTextClass::do_readStyle(LyXLex & lexrc, LyXLayout & lay) lay.reslabelfont.realize(defaultfont(), default_language); #endif return false; // no errors - } + } lyxerr << "Error parsing style `" << lay.name() << "'" << endl; return true; } @@ -91,6 +91,7 @@ enum TextClassTags { TC_CLASSOPTIONS, TC_PREAMBLE, TC_PROVIDESAMSMATH, + TC_PROVIDESNATBIB, TC_PROVIDESMAKEIDX, TC_PROVIDESURL, TC_LEFTMARGIN, @@ -115,6 +116,7 @@ bool LyXTextClass::Read(string const & filename, bool merge) { "preamble", TC_PREAMBLE }, { "providesamsmath", TC_PROVIDESAMSMATH }, { "providesmakeidx", TC_PROVIDESMAKEIDX }, + { "providesnatbib", TC_PROVIDESNATBIB }, { "providesurl", TC_PROVIDESURL }, { "rightmargin", TC_RIGHTMARGIN }, { "secnumdepth", TC_SECNUMDEPTH }, @@ -131,37 +133,37 @@ bool LyXTextClass::Read(string const & filename, bool merge) lyxerr[Debug::TCLASS] << "Reading input file " << MakeDisplayPath(filename) << endl; - + LyXLex lexrc(textClassTags, TC_RIGHTMARGIN); bool error = false; - lexrc.setFile(filename); - if (!lexrc.isOK()) error = true; + lexrc.setFile(filename); + if (!lexrc.isOK()) error = true; // parsing while (lexrc.isOK() && !error) { int le = lexrc.lex(); switch (le) { case LyXLex::LEX_FEOF: - continue; + continue; - case LyXLex::LEX_UNDEF: + case LyXLex::LEX_UNDEF: lexrc.printError("Unknown TextClass tag `$$Token'"); error = true; - continue; + continue; default: break; } switch (static_cast(le)) { case TC_OUTPUTTYPE: // output type definition readOutputType(lexrc); break; - + case TC_INPUT: // Include file - if (lexrc.next()) { - string tmp = LibFileSearch("layouts", - lexrc.getString(), + if (lexrc.next()) { + string tmp = LibFileSearch("layouts", + lexrc.getString(), "layout"); - + if (Read(tmp, true)) { lexrc.printError("Error reading input" "file: "+tmp); @@ -177,7 +179,7 @@ bool LyXTextClass::Read(string const & filename, bool merge) defaultlayout_ = name; } break; - + case TC_STYLE: if (lexrc.next()) { string const name = subst(lexrc.getString(), @@ -221,7 +223,7 @@ bool LyXTextClass::Read(string const & filename, bool merge) if (lexrc.next()) columns_ = lexrc.getInteger(); break; - + case TC_SIDES: if (lexrc.next()) { switch (lexrc.getInteger()) { @@ -236,12 +238,12 @@ bool LyXTextClass::Read(string const & filename, bool merge) } } break; - + case TC_PAGESTYLE: - lexrc.next(); + lexrc.next(); pagestyle_ = strip(lexrc.getString()); break; - + case TC_DEFAULTFONT: defaultfont_.lyxRead(lexrc); if (!defaultfont_.resolved()) { @@ -251,7 +253,7 @@ bool LyXTextClass::Read(string const & filename, bool merge) defaultfont_.realize(LyXFont(LyXFont::ALL_SANE)); #else defaultfont_.realize(LyXFont(LyXFont::ALL_SANE), - default_language); + default_language); #endif } break; @@ -270,10 +272,10 @@ bool LyXTextClass::Read(string const & filename, bool merge) tocdepth_ = lexrc.getInteger(); break; - // First step to support options - case TC_CLASSOPTIONS: + // First step to support options + case TC_CLASSOPTIONS: readClassOptions(lexrc); - break; + break; case TC_PREAMBLE: preamble_ = lexrc.getLongString("EndPreamble"); @@ -284,6 +286,11 @@ bool LyXTextClass::Read(string const & filename, bool merge) provides_ |= amsmath; break; + case TC_PROVIDESNATBIB: + if (lexrc.next() && lexrc.getInteger()) + provides_ |= natbib; + break; + case TC_PROVIDESMAKEIDX: if (lexrc.next() && lexrc.getInteger()) provides_ |= makeidx; @@ -291,23 +298,23 @@ bool LyXTextClass::Read(string const & filename, bool merge) case TC_PROVIDESURL: if (lexrc.next() && lexrc.getInteger()) - provides_ = url; + provides_ |= url; break; case TC_LEFTMARGIN: // left margin type - if (lexrc.next()) + if (lexrc.next()) leftmargin_ = lexrc.getString(); - break; + break; case TC_RIGHTMARGIN: // right margin type if (lexrc.next()) rightmargin_ = lexrc.getString(); break; } - } + } if (!merge) { // we are at top level here. - lyxerr[Debug::TCLASS] << "Finished reading textclass " + lyxerr[Debug::TCLASS] << "Finished reading textclass " << MakeDisplayPath(filename) << endl; if (defaultlayout_.empty()) { @@ -316,7 +323,7 @@ bool LyXTextClass::Read(string const & filename, bool merge) error = true; } } else - lyxerr[Debug::TCLASS] << "Finished reading input file " + lyxerr[Debug::TCLASS] << "Finished reading input file " << MakeDisplayPath(filename) << endl; @@ -389,7 +396,7 @@ void LyXTextClass::readMaxCounter(LyXLex & lexrc) switch (le) { case LyXLex::LEX_UNDEF: lexrc.printError("Unknown MaxCounter tag `$$Token'"); - return; + return; default: break; } switch (static_cast(le)) { @@ -451,7 +458,7 @@ void LyXTextClass::readClassOptions(LyXLex & lexrc) switch (le) { case LyXLex::LEX_UNDEF: lexrc.printError("Unknown ClassOption tag `$$Token'"); - continue; + continue; default: break; } switch (static_cast(le)) { @@ -461,7 +468,7 @@ void LyXTextClass::readClassOptions(LyXLex & lexrc) break; case CO_PAGESTYLE: lexrc.next(); - opt_pagestyle_ = strip(lexrc.getString()); + opt_pagestyle_ = strip(lexrc.getString()); break; case CO_OTHER: lexrc.next(); @@ -497,7 +504,7 @@ string const & LyXTextClass::rightmargin() const bool LyXTextClass::hasLayout(string const & n) const { string const name = (n.empty() ? defaultLayoutName() : n); - + return find_if(layoutlist.begin(), layoutlist.end(), lyx::compare_memfun(&LyXLayout::name, name)) != layoutlist.end(); @@ -507,10 +514,10 @@ bool LyXTextClass::hasLayout(string const & n) const LyXLayout const & LyXTextClass::operator[](string const & n) const { lyx::Assert(!n.empty()); - + if (n.empty()) lyxerr << "Operator[] called with empty n" << endl; - + string const name = (n.empty() ? defaultLayoutName() : n); static string lastLayoutName; @@ -519,7 +526,7 @@ LyXLayout const & LyXTextClass::operator[](string const & n) const if (name == lastLayoutName) return layoutlist[lastLayoutIndex]; - + LayoutList::const_iterator cit = find_if(layoutlist.begin(), layoutlist.end(), @@ -529,14 +536,14 @@ LyXLayout const & LyXTextClass::operator[](string const & n) const lyxerr << "We failed to find the layout '" << name << "' in the layout list. You MUST investigate!" << endl; - + // we require the name to exist lyx::Assert(false); } lastLayoutName = name; lastLayoutIndex = std::distance(layoutlist.begin(), cit); - + return *cit; } @@ -545,7 +552,7 @@ bool LyXTextClass::delete_layout(string const & name) { if (name == defaultLayoutName()) return false; - + LayoutList::iterator it = remove_if(layoutlist.begin(), layoutlist.end(), lyx::compare_memfun(&LyXLayout::name, name)); @@ -575,7 +582,7 @@ bool LyXTextClass::load() const } loaded = true; return loaded; - + } @@ -669,7 +676,7 @@ bool LyXTextClass::provides(LyXTextClass::Provides p) const { return provides_ & p; } - + unsigned int LyXTextClass::columns() const {