+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * FORMAT: document change to format 234.
+
2003-03-07 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
* FORMAT: document jurabib.
LyX file-format changes
-----------------------
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * format incremented to 234.
+ * the citation engine is specified explicitly rather than being
+ deduced from 3 bools.
+
+ \use_natbib 1
+ \use_numerical_citations 0 -> \cite_engine <style>
+ \use_jurabib 0
+
+ where <style> is one of "basic", "natbib_authoryear",
+ "natbib_numerical" or "jurabib".
+
2004-04-29 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* format incremented to 233.
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * lyx_1_4.py (convert_cite_engine, revert_cite_engine): new functions
+ to convert the code that specifies the type of the citation engine
+ (basic, natbib or jurabib).
+
+ * parser_tools.py: up the format to 234.
+
2004-05-11 José Matos <jamatos@lyx.org>
return
+##
+# \use_natbib 1 \cite_engine <style>
+# \use_numerical_citations 0 -> where <style> is one of
+# \use_jurabib 0 "basic", "natbib_authoryear",
+# "natbib_numerical" or "jurabib"
+def convert_cite_engine(header, opt):
+ a = find_token(header, "\\use_natbib", 0)
+ if a == -1:
+ opt.warning("Malformed lyx file: Missing '\\use_natbib'")
+ return
+
+ b = find_token(header, "\\use_numerical_citations", 0)
+ if b == -1 or b != a+1:
+ opt.warning("Malformed lyx file: Missing '\\use_numerical_citations'")
+ return
+
+ c = find_token(header, "\\use_jurabib", 0)
+ if c == -1 or c != b+1:
+ opt.warning("Malformed lyx file: Missing '\\use_jurabib'")
+ return
+
+ use_natbib = int(split(header[a])[1])
+ use_numerical_citations = int(split(header[b])[1])
+ use_jurabib = int(split(header[c])[1])
+
+ cite_engine = "basic"
+ if use_natbib:
+ if use_numerical_citations:
+ cite_engine = "natbib_numerical"
+ else:
+ cite_engine = "natbib_authoryear"
+ elif use_jurabib:
+ cite_engine = "jurabib"
+
+ del header[a:c+1]
+ header.insert(a, "\\cite_engine " + cite_engine)
+
+
+def revert_cite_engine(header, opt):
+ i = find_token(header, "\\cite_engine", 0)
+ if i == -1:
+ opt.warning("Malformed lyx file: Missing '\\cite_engine'")
+ return
+
+ cite_engine = split(header[i])[1]
+
+ use_natbib = '0'
+ use_numerical = '0'
+ use_jurabib = '0'
+ if cite_engine == "natbib_numerical":
+ use_natbib = '1'
+ use_numerical = '1'
+ elif cite_engine == "natbib_authoryear":
+ use_natbib = '1'
+ elif cite_engine == "jurabib":
+ use_jurabib = '1'
+
+ del header[i]
+ header.insert(i, "\\use_jurabib " + use_jurabib)
+ header.insert(i, "\\use_numerical_citations " + use_numerical)
+ header.insert(i, "\\use_natbib " + use_natbib)
+
+
##
# Convertion hub
#
convert_graphics(body, opt)
convert_names(body, opt)
opt.format = 233
+ if opt.end == opt.format: return
+
+ if opt.format < 234:
+ convert_cite_engine(header, opt)
+ opt.format = 234
def revert(header, body, opt):
+ if opt.format > 233:
+ revert_cite_engine(header, opt)
+ opt.format = 233
+ if opt.end == opt.format: return
+
if opt.format > 232:
revert_names(body, opt)
opt.format = 232
format_re = re.compile(r"(\d)[\.,]?(\d\d)")
fileformat = re.compile(r"\\lyxformat\s*(\S*)")
lst_ft = [210, 215, 216, 217, 218, 220, 221, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233]
+ 230, 231, 232, 233, 234]
format_relation = [("0_10", [210], ["0.10.7","0.10"]),
("0_12", [215], ["0.12","0.12.1","0.12"]),
("1_1_6fix3", [218], ["1.1.6fix3","1.1.6fix4","1.1"]),
("1_2", [220], ["1.2.0","1.2.1","1.2.3","1.2.4","1.2"]),
("1_3", [221], ["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3"]),
- ("1_4", [223,224,225,226,227,228,229,230,231,232,233], ["1.4.0cvs","1.4"])]
+ ("1_4", [223,224,225,226,227,228,229,230,231,232,233,234], ["1.4.0cvs","1.4"])]
def lyxformat(format, opt):
if format in lst_ft:
return format
- opt.error(str(format) + ": " + "Format no supported.")
+ opt.error(str(format) + ": " + "Format not supported.")
return None
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * buffer.C: up LYX_FORMAT to 234.
+ * bufferparams.[Ch]: replace the three bools, use_natbib, use_jurabib,
+ use_numerical_citations with a single biblio::CiteEngine cite_engine
+ variable.
+ * LaTeXFeatures.C (getPackages): use BufferParams::cite_engine.
+
2004-05-13 José Matos <jamatos@lyx.org>
* converter.h:
// natbib.sty
if (isRequired("natbib") && ! tclass.provides(LyXTextClass::natbib)) {
packages << "\\usepackage[";
- if (params_.use_numerical_citations) {
+ if (params_.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL) {
packages << "numbers";
} else {
packages << "authoryear";
namespace {
-const int LYX_FORMAT = 233;
+const int LYX_FORMAT = 234;
} // namespace anon
orientation = ORIENTATION_PORTRAIT;
use_geometry = false;
use_amsmath = AMS_AUTO;
- use_natbib = false;
- use_numerical_citations = false;
- use_jurabib = false;
+ cite_engine = biblio::ENGINE_BASIC;
use_bibtopic = false;
tracking_changes = false;
secnumdepth = 3;
lex.nextToken();
use_amsmath = static_cast<AMS>(
lex.getInteger());
- } else if (token == "\\use_natbib") {
+ } else if (token == "\\cite_engine") {
lex.nextToken();
- use_natbib = lex.getInteger();
- } else if (token == "\\use_numerical_citations") {
- lex.nextToken();
- use_numerical_citations = lex.getInteger();
- } else if (token == "\\use_jurabib") {
- lex.nextToken();
- use_jurabib = lex.getInteger();
+ string const engine = lex.getString();
+
+ cite_engine = biblio::ENGINE_BASIC;
+ if (engine == "natbib_numerical")
+ cite_engine = biblio::ENGINE_NATBIB_NUMERICAL;
+ else if (engine == "natbib_authoryear")
+ cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR;
+ else if (engine == "jurabib")
+ cite_engine = biblio::ENGINE_JURABIB;
+
} else if (token == "\\use_bibtopic") {
lex.nextToken();
use_bibtopic = lex.getInteger();
spacing().writeFile(os);
+ string cite_engine_str = "basic";
+ switch (cite_engine) {
+ case biblio::ENGINE_BASIC:
+ break;
+ case biblio::ENGINE_NATBIB_NUMERICAL:
+ cite_engine_str = "natbib_numerical";
+ break;
+ case biblio::ENGINE_NATBIB_AUTHORYEAR:
+ cite_engine_str = "natbib_authoryear";
+ break;
+ case biblio::ENGINE_JURABIB:
+ cite_engine_str = "jurabib";
+ break;
+ }
+
os << "\\papersize " << string_papersize[papersize2]
<< "\n\\paperpackage " << string_paperpackages[paperpackage]
<< "\n\\use_geometry " << use_geometry
<< "\n\\use_amsmath " << use_amsmath
- << "\n\\use_natbib " << use_natbib
- << "\n\\use_numerical_citations " << use_numerical_citations
- << "\n\\use_jurabib " << use_jurabib
- << "\n\\use_bibtopic " << use_bibtopic
+ << "\n\\cite_engine " << cite_engine_str
+ << "\n\\use_bibtopic " << use_bibtopic
<< "\n\\paperorientation " << string_orientation[orientation]
<< '\n';
#include "insets/insetquotes.h"
+#include "frontends/controllers/biblio.h"
+
#include "support/copied_ptr.h"
#include "support/types.h"
};
AMS use_amsmath;
///
- bool use_natbib;
- ///
- bool use_numerical_citations;
- ///
- bool use_jurabib;
+ biblio::CiteEngine cite_engine;
///
bool use_bibtopic;
/// revision tracking for this buffer ?
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * biblio.C (getEngine): reduced to the trivial.
+
2004-05-10 Angus Leeming <leeming@lyx.org>
* biblio.[Ch]: create a new biblio::CiteEngine enum. Use it instead of
CiteEngine getEngine(Buffer const & buffer)
{
- CiteEngine engine = ENGINE_BASIC;
-
- if (buffer.params().use_natbib) {
- if (buffer.params().use_numerical_citations) {
- engine = ENGINE_NATBIB_NUMERICAL;
- } else {
- engine = ENGINE_NATBIB_AUTHORYEAR;
- }
- }
-
- if (buffer.params().use_jurabib)
- engine = ENGINE_JURABIB;
-
- return engine;
+ return buffer.params().cite_engine;
}
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * QDocument.C (apply, update): get, set data with
+ BufferParams::cite_engine.
+
2004-05-10 Angus Leeming <leeming@lyx.org>
* QCitation.C: simplified code to use the biblio::CiteEngine
fromqstr(dialog_->preambleModule->preambleMLE->text());
// biblio
- params.use_natbib =
- dialog_->biblioModule->citeNatbibRB->isChecked();
- params.use_numerical_citations =
- dialog_->biblioModule->citeStyleCO->currentItem();
- params.use_jurabib =
- dialog_->biblioModule->citeJurabibRB->isChecked();
+ params.cite_engine = biblio::ENGINE_BASIC;
+
+ if (dialog_->biblioModule->citeNatbibRB->isChecked()) {
+ bool const use_numerical_citations =
+ dialog_->biblioModule->citeStyleCO->currentItem();
+ if (use_numerical_citations)
+ params.cite_engine = biblio::ENGINE_NATBIB_NUMERICAL;
+ else
+ params.cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR;
+
+ } else if (dialog_->biblioModule->citeJurabibRB->isChecked())
+ params.cite_engine = biblio::ENGINE_JURABIB;
+
params.use_bibtopic =
dialog_->biblioModule->bibtopicCB->isChecked();
// biblio
dialog_->biblioModule->citeDefaultRB->setChecked(
- !params.use_natbib && !params.use_jurabib);
+ params.cite_engine == biblio::ENGINE_BASIC);
+
dialog_->biblioModule->citeNatbibRB->setChecked(
- params.use_natbib);
+ params.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL ||
+ params.cite_engine == biblio::ENGINE_NATBIB_AUTHORYEAR);
+
dialog_->biblioModule->citeStyleCO->setCurrentItem(
- params.use_numerical_citations ? 1 : 0);
+ params.cite_engine == biblio::ENGINE_NATBIB_NUMERICAL);
+
dialog_->biblioModule->citeJurabibRB->setChecked(
- params.use_jurabib);
+ params.cite_engine == biblio::ENGINE_JURABIB);
+
dialog_->biblioModule->bibtopicCB->setChecked(
params.use_bibtopic);
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * FormDocument.[Ch], forms/form_document.fd: get, set data with
+ BufferParams::cite_engine.
+
2004-05-10 Angus Leeming <leeming@lyx.org>
* FormCitation.C: simplified code to use the biblio::CiteEngine
bcview().addReadOnly(options_->counter_secnumdepth);
bcview().addReadOnly(options_->counter_tocdepth);
bcview().addReadOnly(options_->choice_ams_math);
- bcview().addReadOnly(options_->radio_use_defcite);
- bcview().addReadOnly(options_->radio_use_jurabib);
- bcview().addReadOnly(options_->radio_use_natbib);
+ bcview().addReadOnly(options_->choice_cite_engine);
bcview().addReadOnly(options_->check_bibtopic);
- bcview().addReadOnly(options_->choice_citation_format);
bcview().addReadOnly(options_->input_float_placement);
bcview().addReadOnly(options_->choice_postscript_driver);
- // add cite style radio buttons
- citestyle_.init(options_->radio_use_defcite, DEFCITE);
- citestyle_.init(options_->radio_use_natbib, NATBIB);
- citestyle_.init(options_->radio_use_jurabib, JURABIB);
+ string const cite_choices =
+ _(" Basic | Natbib author-year | Natbib numerical | Jurabib ");
+ fl_addto_choice(options_->choice_cite_engine, cite_choices.c_str());
// set up the tooltips for optionss form
- string str = _("Use LaTeX's default citation style");
- tooltips().init(options_->radio_use_defcite, str);
- str = _("Use the natbib styles for natural sciences and arts");
- tooltips().init(options_->radio_use_natbib, str);
- str = _("Use the jurabib styles for law and humanities");
- tooltips().init(options_->radio_use_jurabib, str);
+ string str = _("Natbib is used often for natural sciences and arts\n"
+ "Jurabib is more common in law and humanities");
+ tooltips().init(options_->choice_cite_engine, str);
str = _("Select this if you want to split your bibliography into sections");
tooltips().init(options_->check_bibtopic, str);
fl_addto_choice(options_->choice_postscript_driver,
tex_graphics[n]);
}
- fl_addto_choice(options_->choice_citation_format,
- _(" Author-year | Numerical ").c_str());
// the document bullets form
bullets_.reset(build_document_bullet(this));
fl_set_choice_text(class_->choice_skip_units,
default_unit.c_str());
- } else if (ob == options_->radio_use_jurabib ||
- ob == options_->radio_use_defcite ||
- ob == options_->radio_use_natbib) {
- setEnabled(options_->choice_citation_format,
- fl_get_button(options_->radio_use_natbib));
-
} else if (ob == branch_->browser_all_branches ||
ob == branch_->browser_selection ||
ob == branch_->button_add_branch ||
params.graphicsDriver = getString(options_->choice_postscript_driver);
params.use_amsmath = static_cast<BufferParams::AMS>(
fl_get_choice(options_->choice_ams_math) - 1);
- params.use_natbib = fl_get_button(options_->radio_use_natbib);
- params.use_numerical_citations =
- fl_get_choice(options_->choice_citation_format) - 1;
- params.use_jurabib = fl_get_button(options_->radio_use_jurabib);
+
+ int const cite_choice = fl_get_choice(options_->choice_cite_engine);
+ switch (cite_choice) {
+ case 1:
+ params.cite_engine = biblio::ENGINE_BASIC;
+ break;
+ case 2:
+ params.cite_engine = biblio::ENGINE_NATBIB_AUTHORYEAR;
+ break;
+ case 3:
+ params.cite_engine = biblio::ENGINE_NATBIB_NUMERICAL;
+ break;
+ case 4:
+ params.cite_engine = biblio::ENGINE_JURABIB;
+ break;
+ }
+
params.use_bibtopic = fl_get_button(options_->check_bibtopic);
int tmpchar = int(fl_get_counter_value(options_->counter_secnumdepth));
fl_set_choice_text(options_->choice_postscript_driver,
params.graphicsDriver.c_str());
fl_set_choice(options_->choice_ams_math, params.use_amsmath + 1);
- fl_set_button(options_->radio_use_natbib, params.use_natbib);
- fl_set_choice(options_->choice_citation_format,
- int(params.use_numerical_citations)+1);
- setEnabled(options_->choice_citation_format, params.use_natbib);
- fl_set_button(options_->radio_use_jurabib, params.use_jurabib);
+
+ int cite_choice = 1;
+ switch (params.cite_engine) {
+ case biblio::ENGINE_BASIC:
+ cite_choice = 1;
+ break;
+ case biblio::ENGINE_NATBIB_AUTHORYEAR:
+ cite_choice = 2;
+ break;
+ case biblio::ENGINE_NATBIB_NUMERICAL:
+ cite_choice = 3;
+ break;
+ case biblio::ENGINE_JURABIB:
+ cite_choice = 4;
+ break;
+ }
+ fl_set_choice(options_->choice_cite_engine, cite_choice);
+
fl_set_button(options_->check_bibtopic, params.use_bibtopic);
fl_set_counter_value(options_->counter_secnumdepth, params.secnumdepth);
fl_set_counter_value(options_->counter_tocdepth, params.tocdepth);
#include "FormDialogView.h"
#include "BranchList.h"
-#include "RadioButtonGroup.h"
#include <boost/scoped_ptr.hpp>
std::vector<std::string> lang_;
/// Contains all legal branches for this doc
BranchList branchlist_;
-
- /// citation style buttons
- RadioButtonGroup citestyle_;
};
#endif
--------------------
class: FL_BEGIN_GROUP
type: 0
-box: 0 0 0 0
+box: 0 10 10 0
boxtype: FL_NO_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_CENTER
--------------------
class: FL_BEGIN_GROUP
type: 0
-box: 0 0 0 0
+box: 0 10 10 0
boxtype: FL_NO_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_CENTER
--------------------
class: FL_BEGIN_GROUP
type: 0
-box: 0 0 0 0
+box: 0 10 10 0
boxtype: FL_NO_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_CENTER
--------------------
class: FL_BEGIN_GROUP
type: 0
-box: 0 0 0 0
+box: 0 10 10 0
boxtype: FL_NO_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_CENTER
Name: form_document_options
Width: 395
Height: 315
-Number of Objects: 12
+Number of Objects: 8
--------------------
class: FL_BOX
callback: C_FormDialogView_InputCB
argument: 0
---------------------
-class: FL_ROUND3DBUTTON
-type: RADIO_BUTTON
-box: 25 205 140 25
-boxtype: FL_NO_BOX
-colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Natbib|#N
-shortcut:
-resize: FL_RESIZE_ALL
-gravity: FL_NoGravity FL_NoGravity
-name: radio_use_natbib
-callback: C_FormDialogView_InputCB
-argument: 0
-
---------------------
-class: FL_CHOICE
-type: NORMAL_CHOICE
-box: 235 230 140 25
-boxtype: FL_FRAME_BOX
-colors: FL_COL1 FL_BLACK
-alignment: FL_ALIGN_TOP_LEFT
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Natbib style:|#i
-shortcut:
-resize: FL_RESIZE_ALL
-gravity: FL_NoGravity FL_NoGravity
-name: choice_citation_format
-callback: C_FormDialogView_InputCB
-argument: 0
-
--------------------
class: FL_CHOICE
type: NORMAL_CHOICE
argument: 0
--------------------
-class: FL_LABELFRAME
-type: ENGRAVED_FRAME
-box: 15 170 370 95
-boxtype: FL_NO_BOX
-colors: FL_BLACK FL_COL1
-alignment: FL_ALIGN_TOP_LEFT
-style: FL_NORMAL_STYLE
-size: FL_DEFAULT_SIZE
-lcol: FL_BLACK
-label: Cite Styles
-shortcut:
-resize: FL_RESIZE_ALL
-gravity: FL_NoGravity FL_NoGravity
-name:
-callback:
-argument:
-
---------------------
-class: FL_ROUND3DBUTTON
-type: RADIO_BUTTON
-box: 25 230 140 25
-boxtype: FL_NO_BOX
-colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_CENTER
-style: FL_NORMAL_STYLE
-size: FL_NORMAL_SIZE
-lcol: FL_BLACK
-label: Jurabib|#J
-shortcut:
-resize: FL_RESIZE_ALL
-gravity: FL_NoGravity FL_NoGravity
-name: radio_use_jurabib
-callback: C_FormDialogView_InputCB
-argument: 0
-
---------------------
-class: FL_ROUND3DBUTTON
-type: RADIO_BUTTON
-box: 25 180 155 25
+class: FL_CHECKBUTTON
+type: PUSH_BUTTON
+box: 185 190 25 25
boxtype: FL_NO_BOX
colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_CENTER
+alignment: FL_ALIGN_LEFT
style: FL_NORMAL_STYLE
size: FL_NORMAL_SIZE
lcol: FL_BLACK
-label: Default (numerical)|#D
+label: Sectioned bibliography|#e
shortcut:
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
-name: radio_use_defcite
+name: check_bibtopic
callback: C_FormDialogView_InputCB
argument: 0
--------------------
-class: FL_CHECKBUTTON
-type: PUSH_BUTTON
-box: 15 270 255 25
-boxtype: FL_NO_BOX
-colors: FL_COL1 FL_YELLOW
-alignment: FL_ALIGN_CENTER
+class: FL_CHOICE
+type: NORMAL_CHOICE
+box: 185 160 140 25
+boxtype: FL_FRAME_BOX
+colors: FL_COL1 FL_BLACK
+alignment: FL_ALIGN_LEFT
style: FL_NORMAL_STYLE
size: FL_NORMAL_SIZE
lcol: FL_BLACK
-label: Sectioned bibliography|#e
+label: Citation Style:|#C
shortcut:
resize: FL_RESIZE_ALL
gravity: FL_NoGravity FL_NoGravity
-name: check_bibtopic
+name: choice_cite_engine
callback: C_FormDialogView_InputCB
argument: 0
--------------------
class: FL_BEGIN_GROUP
type: 0
-box: 0 0 0 0
+box: 0 10 10 0
boxtype: FL_NO_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_CENTER
--------------------
class: FL_BEGIN_GROUP
type: 0
-box: 0 0 0 0
+box: 0 10 10 0
boxtype: FL_NO_BOX
colors: FL_COL1 FL_MCOL
alignment: FL_ALIGN_CENTER
+2004-05-12 Angus Leeming <leeming@lyx.org>
+
+ * insetcite.C: use BufferParams::cite_engine rather than the three
+ bools, use_natbib, use_jurabib, use_numerical_citations.
+
2004-05-10 Angus Leeming <leeming@lyx.org>
* insetcite.[Ch]: move the Cache::Style enum to biblio::CiteEngine.
string const getNatbibLabel(Buffer const & buffer,
string const & citeType, string const & keyList,
string const & before, string const & after,
- bool numerical, bool jura)
+ biblio::CiteEngine engine)
{
// Only start the process off after the buffer is loaded from file.
if (!buffer.fully_loaded())
// authors1/<before>; ... ;
// authors_last, <after>
- if (cite_type == "cite" && jura) {
+ if (cite_type == "cite" && engine == biblio::ENGINE_JURABIB) {
if (it == keys.begin())
label += author + before_str + sep_str;
else
// (authors1 (<before> year); ... ;
// authors_last (<before> year, <after>)
} else if (cite_type == "citet") {
- string const tmp = numerical ? '#' + *it : year;
- if (!jura)
- label += author + op_str + before_str + tmp +
- cp + sep_str;
- else
- label += before_str + author + op_str + tmp +
- cp + sep_str;
+ switch (engine) {
+ case biblio::ENGINE_NATBIB_AUTHORYEAR:
+ label += author + op_str + before_str +
+ year + cp + sep_str;
+ break;
+ case biblio::ENGINE_NATBIB_NUMERICAL:
+ label += author + op_str + before_str +
+ '#' + *it + cp + sep_str;
+ break;
+ case biblio::ENGINE_JURABIB:
+ label += before_str + author + op_str +
+ year + cp + sep_str;
+ break;
+ case biblio::ENGINE_BASIC:
+ break;
+ }
// author, year; author, year; ...
} else if (cite_type == "citep" ||
cite_type == "citealp") {
- if (numerical) {
+ if (engine == biblio::ENGINE_NATBIB_NUMERICAL) {
label += *it + sep_str;
} else {
label += author + ", " + year + sep_str;
// (authors1 <before> year;
// authors_last <before> year, <after>)
} else if (cite_type == "citealt") {
- string const tmp = numerical ? '#' + *it : year;
- if (!jura)
- label += author + ' ' + before_str + tmp + sep_str;
- else
- label += before_str + author + ' ' + tmp + sep_str;
+ switch (engine) {
+ case biblio::ENGINE_NATBIB_AUTHORYEAR:
+ label += author + ' ' + before_str +
+ year + sep_str;
+ break;
+ case biblio::ENGINE_NATBIB_NUMERICAL:
+ label += author + ' ' + before_str +
+ '#' + *it + sep_str;
+ break;
+ case biblio::ENGINE_JURABIB:
+ label += before_str + author + ' ' +
+ year + sep_str;
+ break;
+ case biblio::ENGINE_BASIC:
+ break;
+ }
// author; author; ...
} else if (cite_type == "citeauthor") {
// insert "after" before last ')'
label.insert(label.size() - 1, after_str);
} else {
- bool const add = !(numerical &&
- (cite_type == "citeauthor" ||
- cite_type == "citeyear"));
+ bool const add =
+ !(engine == biblio::ENGINE_NATBIB_NUMERICAL &&
+ (cite_type == "citeauthor" ||
+ cite_type == "citeyear"));
if (add)
label += after_str;
}
string const after = getOptions();
string label;
- if (buffer.params().use_natbib || buffer.params().use_jurabib) {
+ biblio::CiteEngine const engine = buffer.params().cite_engine;
+ if (engine != biblio::ENGINE_BASIC) {
string cmd = getCmdName();
- if (buffer.params().use_natbib && cmd == "cite") {
+ if (cmd == "cite") {
// We may be "upgrading" from an older LyX version.
// If, however, we use "cite" because the necessary
// author/year info is not present in the biblio
// database, then getNatbibLabel will exit gracefully
// and we'll call getBasicLabel.
- if (buffer.params().use_numerical_citations)
+ if (engine == biblio::ENGINE_NATBIB_NUMERICAL)
cmd = "citep";
- else
+ else if (engine == biblio::ENGINE_NATBIB_AUTHORYEAR)
cmd = "citet";
}
label = getNatbibLabel(buffer, cmd, getContents(),
- before, after,
- buffer.params().use_numerical_citations,
- buffer.params().use_jurabib);
+ before, after, engine);
}
// Fallback to fail-safe
int InsetCitation::latex(Buffer const & buffer, ostream & os,
OutputParams const &) const
{
+ biblio::CiteEngine const cite_engine = buffer.params().cite_engine;
+
os << "\\";
- if (buffer.params().use_natbib)
+ switch (cite_engine) {
+ case biblio::ENGINE_BASIC:
+ os << "cite";
+ break;
+ case biblio::ENGINE_NATBIB_AUTHORYEAR:
+ case biblio::ENGINE_NATBIB_NUMERICAL:
os << getCmdName();
- else if (buffer.params().use_jurabib) {
+ break;
+ case biblio::ENGINE_JURABIB:
+ {
// jurabib does not (yet) support "force upper case"
// and "full author name". Fallback.
string cmd = getCmdName();
if (cmd[n] == '*')
cmd = cmd.substr(0,n);
os << cmd;
- } else
- os << "cite";
-
+ break;
+ }
+ }
+
string const before = getSecOptions();
string const after = getOptions();
- if (!before.empty()
- && (buffer.params().use_natbib || buffer.params().use_jurabib))
+ if (!before.empty() && cite_engine != biblio::ENGINE_BASIC)
os << '[' << before << "][" << after << ']';
else if (!after.empty())
os << '[' << after << ']';
void InsetCitation::validate(LaTeXFeatures & features) const
{
- if (features.bufferParams().use_natbib)
+ switch (features.bufferParams().cite_engine) {
+ case biblio::ENGINE_BASIC:
+ break;
+ case biblio::ENGINE_NATBIB_AUTHORYEAR:
+ case biblio::ENGINE_NATBIB_NUMERICAL:
features.require("natbib");
- else if (features.bufferParams().use_jurabib)
+ break;
+ case biblio::ENGINE_JURABIB:
features.require("jurabib");
+ break;
+ }
}