#include "VSpace.h"
#include "frontends/alert.h"
+#include "insets/InsetListingsParams.h"
#include "support/lyxalgo.h" // for lyx::count
#include "support/convert.h"
graphicsDriver = "default";
sides = TextClass::OneSide;
columns = 1;
+ listings_params = string();
pagestyle = "default";
compressed = false;
for (int iter = 0; iter < 4; ++iter) {
lex >> fontsize;
} else if (token == "\\papercolumns") {
lex >> columns;
+ } else if (token == "\\listings_params") {
+ string par;
+ lex >> par;
+ // validate par and produce a valid listings parameter string
+ try {
+ listings_params = InsetListingsParams(par).params();
+ } catch (invalidParam & e) {
+ lyxerr << "Invalid parameter string " << par << endl;
+ lyxerr << e.what() << endl;
+ listings_params = string();
+ }
} else if (token == "\\papersides") {
int psides;
lex >> psides;
<< "\n\\papercolumns " << columns
<< "\n\\papersides " << sides
<< "\n\\paperpagestyle " << pagestyle << '\n';
+ if (!listings_params.empty())
+ os << "\\listings_params \"" <<
+ InsetListingsParams(listings_params).encodedString() << "\"\n";
for (int i = 0; i < 4; ++i) {
if (user_defined_bullet(i) != ITEMIZE_DEFAULTS[i]) {
if (user_defined_bullet(i).getFont() != -1) {
language_options << ',';
language_options << language->babel();
}
- if (lyxrc.language_global_options)
+ if (lyxrc.language_global_options && !language_options.str().empty())
clsoptions << language_options.str() << ',';
}
texrow.newline();
}
+ if (!listings_params.empty()) {
+ os << "\\usepackage{listings}\n";
+ texrow.newline();
+ os << "\\lstset{";
+ // do not test validity because listings_params is supposed to be valid
+ string par = InsetListingsParams(listings_params).separatedParams(true);
+ os << from_ascii(par);
+ // count the number of newlines
+ for (size_t i = 0; i < par.size(); ++i)
+ if (par[i] == '\n')
+ texrow.newline();
+ os << "}\n";
+ texrow.newline();
+ }
if (use_geometry || nonstandard_papersize) {
os << "\\usepackage{geometry}\n";
texrow.newline();
lyxpreamble += "\\makeatother\n";
- // dvipost settings come after everything else
- if (features.isAvailable("dvipost") && outputChanges) {
- lyxpreamble +=
- "\\dvipostlayout\n"
- "\\dvipost{osstart color push Red}\n"
- "\\dvipost{osend color pop}\n"
- "\\dvipost{cbstart color push Blue}\n"
- "\\dvipost{cbend color pop}\n";
- }
-
int const nlines =
int(lyx::count(lyxpreamble.begin(), lyxpreamble.end(), '\n'));
for (int j = 0; j != nlines; ++j) {
string const BufferParams::babelCall(string const & lang_opts) const
{
- string tmp = lyxrc.language_package;
- if (!lyxrc.language_global_options && tmp == "\\usepackage{babel}")
- tmp = string("\\usepackage[") + lang_opts + "]{babel}";
- return tmp;
+ string lang_pack = lyxrc.language_package;
+ if (lang_pack != "\\usepackage{babel}")
+ return lang_pack;
+ // suppress the babel call when there is no babel language defined
+ // for the document language in the lib/languages file and if no
+ // other languages are used (lang_opts is then empty)
+ if (lang_opts.empty())
+ return string();
+ if (!lyxrc.language_global_options)
+ return "\\usepackage[" + lang_opts + "]{babel}";
+ return lang_pack;
}