-/* This file is part of
- * ======================================================
+/**
+ * \file bufferparams.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * LyX, The Document Processor
+ * \author Alfredo Braunstein
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ * \author John Levon
+ * \author André Pönitz
+ * \author Martin Vermeer
*
- * Copyright 1995 Matthias Ettrich
- * Copyright 1995-2001 The LyX Team.
- *
- * ====================================================== */
+ * Full author contact details are available in file CREDITS.
+ */
#include <config.h>
+#include "author.h"
#include "bufferparams.h"
-#include "tex-strings.h"
+#include "debug.h"
#include "encoding.h"
+#include "gettext.h"
#include "layout.h"
-#include "vspace.h"
-#include "debug.h"
-#include "lyxrc.h"
#include "language.h"
-#include "lyxtextclasslist.h"
-#include "lyxlex.h"
+#include "LaTeXFeatures.h"
+#include "LColor.h"
#include "Lsstream.h"
-#include "author.h"
-#include "gettext.h"
+#include "lyxrc.h"
+#include "lyxlex.h"
+#include "lyxtextclasslist.h"
+#include "tex-strings.h"
+#include "texrow.h"
+#include "vspace.h"
+
+#include "frontends/Alert.h"
#include "support/lyxalgo.h" // for lyx::count
#include "support/lyxlib.h"
#include "support/lstrings.h"
#include "support/types.h"
-#include "frontends/Alert.h"
-
#include <cstdlib>
#include <algorithm>
sides = LyXTextClass::OneSide;
columns = 1;
pagestyle = "default";
+ compressed = false;
for (int iter = 0; iter < 4; ++iter) {
user_defined_bullets[iter] = ITEMIZE_DEFAULTS[iter];
temp_bullets[iter] = ITEMIZE_DEFAULTS[iter];
if (tmpret == -1)
++tmpret;
paragraph_separation =
- static_cast<BufferParams::PARSEP>(tmpret);
+ static_cast<PARSEP>(tmpret);
} else if (token == "\\defskip") {
lex.nextToken();
defskip = VSpace(lex.getString());
int tmpret = lex.findToken(string_paperpackages);
if (tmpret == -1) {
++tmpret;
- paperpackage = BufferParams::PACKAGE_NONE;
+ paperpackage = PACKAGE_NONE;
} else
paperpackage = PAPER_PACKAGES(tmpret);
} else if (token == "\\use_geometry") {
use_geometry = lex.getInteger();
} else if (token == "\\use_amsmath") {
lex.nextToken();
- use_amsmath = static_cast<BufferParams::AMS>(
+ use_amsmath = static_cast<AMS>(
lex.getInteger());
} else if (token == "\\use_natbib") {
lex.nextToken();
} else if (token == "\\tracking_changes") {
lex.nextToken();
tracking_changes = lex.getInteger();
+ } else if (token == "\\branch") {
+ lex.nextToken();
+ string branch = lex.getString();
+ branchlist.add(branch);
+ while (true) {
+ lex.nextToken();
+ string const tok = lex.getString();
+ if (tok == "\\end_branch")
+ break;
+ if (tok == "\\selected") {
+ lex.nextToken();
+ branchlist.setSelected(branch, lex.getInteger());
+ }
+ // not yet operational
+ if (tok == "\\color") {
+ lex.nextToken();
+ string color = lex.getString();
+ branchlist.setColor(branch, color);
+ // Update also the LColor table:
+ if (color == "none")
+ color = lcolor.getX11Name(LColor::background);
+ lcolor.fill(static_cast<LColor::color>(lcolor.size()),
+ branch, color);
+ }
+ }
} else if (token == "\\author") {
lex.nextToken();
istringstream ss(STRCONV(lex.getString()));
if (tmpret == -1)
++tmpret;
orientation =
- static_cast<BufferParams::PAPER_ORIENTATION>(tmpret);
+ static_cast<PAPER_ORIENTATION>(tmpret);
} else if (token == "\\paperwidth") {
lex.next();
paperwidth = lex.getString();
<< "\n\\use_numerical_citations " << use_numerical_citations
<< "\n\\paperorientation " << string_orientation[orientation]
<< '\n';
+
+ std::list<Branch>::const_iterator it = branchlist.begin();
+ std::list<Branch>::const_iterator end = branchlist.end();
+ for (; it != end; ++it) {
+ os << "\\branch " << it->getBranch()
+ << "\n\\selected " << it->getSelected()
+ << "\n\\color " << it->getColor()
+ << "\n\\end_branch"
+ << "\n";
+ }
+
if (!paperwidth.empty())
os << "\\paperwidth "
<< VSpace(paperwidth).asLyXCommand() << '\n';
}
}
}
+
+
+string const BufferParams::paperSizeName() const
+{
+ char real_papersize = papersize;
+ if (real_papersize == PAPER_DEFAULT)
+ real_papersize = lyxrc.default_papersize;
+
+ switch (real_papersize) {
+ case PAPER_A3PAPER:
+ return "a3";
+ case PAPER_A4PAPER:
+ return "a4";
+ case PAPER_A5PAPER:
+ return "a5";
+ case PAPER_B5PAPER:
+ return "b5";
+ case PAPER_EXECUTIVEPAPER:
+ return "foolscap";
+ case PAPER_LEGALPAPER:
+ return "legal";
+ case PAPER_USLETTER:
+ default:
+ return "letter";
+ }
+}
+
+
+string const BufferParams::dvips_options() const
+{
+ string result;
+
+ if (use_geometry
+ && papersize2 == VM_PAPER_CUSTOM
+ && !lyxrc.print_paper_dimension_flag.empty()
+ && !paperwidth.empty()
+ && !paperheight.empty()) {
+ // using a custom papersize
+ result = lyxrc.print_paper_dimension_flag;
+ result += ' ' + paperwidth;
+ result += ',' + paperheight;
+ } else {
+ string const paper_option = paperSizeName();
+ if (paper_option != "letter" ||
+ orientation != ORIENTATION_LANDSCAPE) {
+ // dvips won't accept -t letter -t landscape.
+ // In all other cases, include the paper size
+ // explicitly.
+ result = lyxrc.print_paper_flag;
+ result += ' ' + paper_option;
+ }
+ }
+ if (orientation == ORIENTATION_LANDSCAPE &&
+ papersize2 != VM_PAPER_CUSTOM)
+ result += ' ' + lyxrc.print_landscape_flag;
+ return result;
+}