#include <cstdlib>
#include <algorithm>
+using namespace lyx::support;
+
using std::ostream;
using std::endl;
using std::pair;
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());
if (tmpret == -1)
++tmpret;
else
- papersize2 = tmpret;
+ papersize2 = VMARGIN_PAPER_TYPE(tmpret);
} else if (token == "\\paperpackage") {
int tmpret = lex.findToken(string_paperpackages);
if (tmpret == -1) {
++tmpret;
- paperpackage = BufferParams::PACKAGE_NONE;
+ paperpackage = PACKAGE_NONE;
} else
- paperpackage = tmpret;
+ paperpackage = PAPER_PACKAGES(tmpret);
} else if (token == "\\use_geometry") {
lex.nextToken();
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();
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();
if (!use_geometry &&
(paperpackage == PACKAGE_NONE)) {
switch (papersize) {
+ case PAPER_A3PAPER:
+ clsoptions << "a3paper,";
+ break;
case PAPER_A4PAPER:
clsoptions << "a4paper,";
break;
case PAPER_LEGALPAPER:
clsoptions << "legalpaper,";
break;
+ case PAPER_DEFAULT:
+ break;
}
}
// At the very beginning the text parameters.
if (paperpackage != PACKAGE_NONE) {
switch (paperpackage) {
+ case PACKAGE_NONE:
+ break;
case PACKAGE_A4:
os << "\\usepackage{a4}\n";
texrow.newline();
}
}
}
+
+
+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;
+}