On Mon, Mar 19, 2007 at 06:08:48PM +0100, Jean-Marc Lasgouttes wrote:
> >>>>> "Martin" == Martin Vermeer <[EMAIL PROTECTED]> writes:
>
> Martin> Yes indeed, why not ;-/ Getting dumber by the day.
>
> Martin> New attached.
>
> Very good. If you think it is good enough and working for 1.4, you can
> apply it (since having egs working better in 1.4 would be valuable,
> from what I understand).
Here is the version for 1.4, tried and works as advertised for me.
I will apply this tomorrow if nobody spots a problem.
- Martin
Index: src/insets/insetcite.C
===================================================================
--- src/insets/insetcite.C (revision 15477)
+++ src/insets/insetcite.C (working copy)
@@ -304,7 +304,7 @@
string const after = getOptions();
string label;
- biblio::CiteEngine const engine = buffer.params().cite_engine;
+ biblio::CiteEngine const engine = buffer.params().getEngine();
if (engine != biblio::ENGINE_BASIC) {
label = getNatbibLabel(buffer, getCmdName(), getContents(),
before, after, engine);
@@ -321,7 +321,7 @@
string 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;
@@ -351,7 +351,7 @@
int InsetCitation::plaintext(Buffer const & buffer, ostream & os, OutputParams
const &) const
{
if (cache.params == params() &&
- cache.engine == biblio::getEngine(buffer))
+ cache.engine == buffer.params().getEngine())
os << cache.generated_label;
else
os << generateLabel(buffer);
Index: src/bufferparams.C
===================================================================
--- src/bufferparams.C (revision 15477)
+++ src/bufferparams.C (working copy)
@@ -1253,3 +1253,21 @@
tmp = string("\\usepackage[") + lang_opts + "]{babel}";
return tmp;
}
+
+
+biblio::CiteEngine_enum BufferParams::getEngine() const
+{
+ // FIXME the class should provide the numerical/
+ // authoryear choice
+ lyxerr << "getEngine" << endl;
+ if (getLyXTextClass().provides(LyXTextClass::natbib)
+ && cite_engine != biblio::ENGINE_NATBIB_NUMERICAL) {
+ lyxerr << "authoryear" << endl;
+ return biblio::ENGINE_NATBIB_AUTHORYEAR;
+ }
+ lyxerr << "cite_engine=" << cite_engine << endl;
+ return cite_engine;
+}
+
+
+
Index: src/bufferparams.h
===================================================================
--- src/bufferparams.h (revision 15477)
+++ src/bufferparams.h (working copy)
@@ -230,7 +230,10 @@
std::string const paperSizeName() const;
///
std::string const babelCall(std::string const & lang_opts) const;
+ /// get the appropriate cite engine (natbib handling)
+ lyx::biblio::CiteEngine_enum getEngine() const;
+
private:
/** Use the Pimpl idiom to hide those member variables that would
otherwise
* drag in other header files.
Index: lib/layouts/egs.layout
===================================================================
--- lib/layouts/egs.layout (revision 15216)
+++ 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 15477)
+++ src/frontends/controllers/ControlBibtex.C (working copy)
@@ -133,7 +133,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();
string defaultstyle;
switch (engine) {
case biblio::ENGINE_BASIC:
Index: src/frontends/controllers/ControlCitation.C
===================================================================
--- src/frontends/controllers/ControlCitation.C (revision 15477)
+++ src/frontends/controllers/ControlCitation.C (working copy)
@@ -39,7 +39,7 @@
vector<pair<string, string> > 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,7 +79,7 @@
biblio::CiteEngine_enum ControlCitation::getEngine() const
{
- return biblio::getEngine(kernel().buffer());
+ return kernel().buffer().params().getEngine();
}
@@ -87,7 +87,7 @@
{
vector<string> styles;
- 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 15477)
+++ src/frontends/controllers/biblio.C (working copy)
@@ -679,12 +679,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 15477)
+++ src/frontends/controllers/biblio.h (working copy)
@@ -24,9 +24,7 @@
class CiteEngine_enum;
-CiteEngine_enum getEngine(Buffer const &);
-
enum CiteStyle {
CITE,
CITET,