Use this one rather. - Martin
On Mon, Mar 05, 2007 at 03:50:11PM +0200, Martin Vermeer wrote: > > Attached the reworked patch. Works for me. > > - Martin > > > On Fri, Mar 02, 2007 at 01:38:59PM +0200, Martin Vermeer wrote: > > On Fri, Mar 02, 2007 at 11:34:06AM +0100, Jean-Marc Lasgouttes wrote: > > > >>>>> "Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes: > > > > > > Martin> On Fri, Mar 02, 2007 at 04:13:14AM +0100, Juergen Spitzmueller > > > Martin> wrote: > > > >> José Matos wrote: > > > >> > > > >> > What is Jürgen's opinion on the subject? > > > >> > > > >> Without having a closer look at the patch, my opinion is that > > > >> Martin's approach is good (and necessary) in general. However, it > > > >> should enclose numerical citations in one way or another. > > > >> > > > >> Jürgen > > > > > > Martin> That would be like the attached... but note that I don't think > > > Martin> that is right. I agree that numeric should be handled, but > > > Martin> what happens here is that, also when natbib is pre-loaded by > > > Martin> the document class, the _user_ is allowed to choose between > > > Martin> numeric and author-year. I don't think that is right. > > > > > > I have no idea on the actual logic, but nevertheless: > > > > > > - biblio::CiteEngine const cite_engine = buffer.params().cite_engine; > > > + BufferParams const & p = buffer.params(); > > > + biblio::CiteEngine cite_engine; > > > + if (p.getLyXTextClass().provides(LyXTextClass::natbib) > > > + && p.cite_engine != biblio::ENGINE_NATBIB_NUMERICAL) > > > + cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR; > > > + else > > > + cite_engine = p.cite_engine; > > > > > > Should getEngine from biblio.C be moved to BufferParams and used > > > there? I'd like to factor code whenever possible. > > > > Hmm. What would be the advantage? Sure I can do it... won't be next > > Tuesday though. > > > > > - features.require("natbib"); > > > + if > > > (!features.bufferParams().getLyXTextClass().provides(LyXTextClass::natbib)) > > > + features.require("natbib"); > > > > > > I think it is not necessary because LaTeXFeatures handles it. > > > > Damn you're right... and I actually looked at that code when preparing > > for this. This was the only thing the old code got right ;-/ > > > > - Martin > > > > > > -- > Martin Vermeer Phone +358 (0)9 451 3910 > Professor of Geodesy, TKK Surveying Dept. > :wq > Index: src/insets/insetcite.C > =================================================================== > --- src/insets/insetcite.C (revision 17353) > +++ src/insets/insetcite.C (working copy) > @@ -335,7 +335,7 @@ > > docstring const InsetCitation::getScreenLabel(Buffer const & buffer) const > { > - biblio::CiteEngine const engine = biblio::getEngine(buffer); > + biblio::CiteEngine const engine = buffer.params().getEngine(); > if (cache.params == params() && cache.engine == engine) > return cache.screen_label; > > @@ -368,7 +368,7 @@ > docstring str; > > if (cache.params == params() && > - cache.engine == biblio::getEngine(buffer)) > + cache.engine == buffer.params().getEngine()) > str = cache.generated_label; > else > str = generateLabel(buffer); > @@ -424,7 +424,13 @@ > int InsetCitation::latex(Buffer const & buffer, odocstream & os, > OutputParams const &) const > { > - biblio::CiteEngine const cite_engine = buffer.params().cite_engine; > + BufferParams const & p = buffer.params(); > + biblio::CiteEngine cite_engine; > + if (p.getLyXTextClass().provides(LyXTextClass::natbib) > + && p.cite_engine != biblio::ENGINE_NATBIB_NUMERICAL) > + cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR; > + else > + cite_engine = p.cite_engine; > // FIXME UNICODE > docstring const cite_str = from_utf8( > biblio::asValidLatexCommand(getCmdName(), cite_engine)); > Index: src/bufferparams.C > =================================================================== > --- src/bufferparams.C (revision 17353) > +++ src/bufferparams.C (working copy) > @@ -1482,4 +1482,13 @@ > return *(language->encoding()); > } > > + > +biblio::CiteEngine_enum BufferParams::getEngine() const > +{ > + if (getLyXTextClass().provides(LyXTextClass::natbib) > + && cite_engine != biblio::ENGINE_NATBIB_NUMERICAL) > + return biblio::ENGINE_NATBIB_AUTHORYEAR; > + return cite_engine; > +} > + > } // namespace lyx > Index: src/bufferparams.h > =================================================================== > --- src/bufferparams.h (revision 17381) > +++ src/bufferparams.h (working copy) > @@ -277,6 +277,8 @@ > int const & sfscale, int const & ttscale) > const; > /// path of the current buffer > std::string filepath; > + /// get the appropriate cite engine (natbib handling) > + biblio::CiteEngine_enum getEngine() const; > > private: > /** Use the Pimpl idiom to hide those member variables that would > otherwise > Index: lib/layouts/egs.layout > =================================================================== > --- lib/layouts/egs.layout (revision 17353) > +++ lib/layouts/egs.layout (working copy) > @@ -12,6 +12,7 @@ > Columns 2 > Sides 1 > PageStyle Plain > +ProvidesNatbib 1 > > > Style Standard > Index: src/frontends/controllers/ControlBibtex.C > =================================================================== > --- src/frontends/controllers/ControlBibtex.C (revision 17353) > +++ src/frontends/controllers/ControlBibtex.C (working copy) > @@ -134,7 +134,7 @@ > // the different bibtex packages have (and need) their > // own "plain" stylefiles > biblio::CiteEngine_enum const & engine = > - biblio::getEngine(kernel().buffer()); > + kernel().buffer().params().getEngine(); > docstring defaultstyle; > switch (engine) { > case biblio::ENGINE_BASIC: > Index: src/frontends/controllers/ControlCitation.C > =================================================================== > --- src/frontends/controllers/ControlCitation.C (revision 17353) > +++ src/frontends/controllers/ControlCitation.C (working copy) > @@ -39,7 +39,7 @@ > vector<pair<string, docstring> > blist; > kernel().buffer().fillWithBibKeys(blist); > > - biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer()); > + biblio::CiteEngine const engine = > kernel().buffer().params().getEngine(); > > bool use_styles = engine != biblio::ENGINE_BASIC; > > @@ -79,13 +79,13 @@ > > biblio::CiteEngine_enum ControlCitation::getEngine() const > { > - return biblio::getEngine(kernel().buffer()); > + return kernel().buffer().params().getEngine(); > } > > > vector<docstring> const ControlCitation::getCiteStrings(string const & key) > const > { > - biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer()); > + biblio::CiteEngine const engine = > kernel().buffer().params().getEngine(); > vector<biblio::CiteStyle> const cs = biblio::getCiteStyles(engine); > > if (engine == biblio::ENGINE_NATBIB_NUMERICAL) -- Martin Vermeer Phone +358 (0)9 451 3910 Professor of Geodesy, TKK Surveying Dept. :wq
Index: src/insets/insetcite.C =================================================================== --- src/insets/insetcite.C (revision 17353) +++ src/insets/insetcite.C (working copy) @@ -335,7 +335,7 @@ docstring const InsetCitation::getScreenLabel(Buffer const & buffer) const { - biblio::CiteEngine const engine = biblio::getEngine(buffer); + biblio::CiteEngine const engine = buffer.params().getEngine(); if (cache.params == params() && cache.engine == engine) return cache.screen_label; @@ -368,7 +368,7 @@ docstring str; if (cache.params == params() && - cache.engine == biblio::getEngine(buffer)) + cache.engine == buffer.params().getEngine()) str = cache.generated_label; else str = generateLabel(buffer); @@ -424,7 +424,13 @@ int InsetCitation::latex(Buffer const & buffer, odocstream & os, OutputParams const &) const { - biblio::CiteEngine const cite_engine = buffer.params().cite_engine; + BufferParams const & p = buffer.params(); + biblio::CiteEngine cite_engine; + if (p.getLyXTextClass().provides(LyXTextClass::natbib) + && p.cite_engine != biblio::ENGINE_NATBIB_NUMERICAL) + cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR; + else + cite_engine = p.cite_engine; // FIXME UNICODE docstring const cite_str = from_utf8( biblio::asValidLatexCommand(getCmdName(), cite_engine)); Index: src/bufferparams.C =================================================================== --- src/bufferparams.C (revision 17353) +++ src/bufferparams.C (working copy) @@ -1482,4 +1482,13 @@ return *(language->encoding()); } + +biblio::CiteEngine_enum BufferParams::getEngine() const +{ + if (getLyXTextClass().provides(LyXTextClass::natbib) + && cite_engine != biblio::ENGINE_NATBIB_NUMERICAL) + return biblio::ENGINE_NATBIB_AUTHORYEAR; + return cite_engine; +} + } // namespace lyx Index: src/bufferparams.h =================================================================== --- src/bufferparams.h (revision 17381) +++ src/bufferparams.h (working copy) @@ -277,6 +277,8 @@ int const & sfscale, int const & ttscale) const; /// path of the current buffer std::string filepath; + /// get the appropriate cite engine (natbib handling) + biblio::CiteEngine_enum getEngine() const; private: /** Use the Pimpl idiom to hide those member variables that would otherwise Index: lib/layouts/egs.layout =================================================================== --- lib/layouts/egs.layout (revision 17353) +++ lib/layouts/egs.layout (working copy) @@ -12,6 +12,7 @@ Columns 2 Sides 1 PageStyle Plain +ProvidesNatbib 1 Style Standard Index: src/frontends/controllers/ControlBibtex.C =================================================================== --- src/frontends/controllers/ControlBibtex.C (revision 17353) +++ src/frontends/controllers/ControlBibtex.C (working copy) @@ -134,7 +134,7 @@ // the different bibtex packages have (and need) their // own "plain" stylefiles biblio::CiteEngine_enum const & engine = - biblio::getEngine(kernel().buffer()); + kernel().buffer().params().getEngine(); docstring defaultstyle; switch (engine) { case biblio::ENGINE_BASIC: Index: src/frontends/controllers/ControlCitation.C =================================================================== --- src/frontends/controllers/ControlCitation.C (revision 17353) +++ src/frontends/controllers/ControlCitation.C (working copy) @@ -39,7 +39,7 @@ vector<pair<string, docstring> > blist; kernel().buffer().fillWithBibKeys(blist); - biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer()); + biblio::CiteEngine const engine = kernel().buffer().params().getEngine(); bool use_styles = engine != biblio::ENGINE_BASIC; @@ -79,13 +79,13 @@ biblio::CiteEngine_enum ControlCitation::getEngine() const { - return biblio::getEngine(kernel().buffer()); + return kernel().buffer().params().getEngine(); } vector<docstring> const ControlCitation::getCiteStrings(string const & key) const { - biblio::CiteEngine const engine = biblio::getEngine(kernel().buffer()); + biblio::CiteEngine const engine = kernel().buffer().params().getEngine(); vector<biblio::CiteStyle> const cs = biblio::getCiteStyles(engine); if (engine == biblio::ENGINE_NATBIB_NUMERICAL) Index: src/frontends/controllers/biblio.C =================================================================== --- src/frontends/controllers/biblio.C (revision 17353) +++ src/frontends/controllers/biblio.C (working copy) @@ -688,12 +688,6 @@ } -CiteEngine_enum getEngine(Buffer const & buffer) -{ - return buffer.params().cite_engine; -} - - vector<CiteStyle> const getCiteStyles(CiteEngine_enum const & engine) { unsigned int nStyles = 0; Index: src/frontends/controllers/biblio.h =================================================================== --- src/frontends/controllers/biblio.h (revision 17353) +++ src/frontends/controllers/biblio.h (working copy) @@ -25,9 +25,7 @@ class CiteEngine_enum; -CiteEngine_enum getEngine(Buffer const &); - enum CiteStyle { CITE, CITET,
pgpZUUl2aGZOi.pgp
Description: PGP signature