#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();
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}";
+ 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
- // in the lib/languages file
- if (lyxrc.language_global_options && tmp == "\\usepackage{babel}" &&
- language->babel().empty() ) {
- // if the armscii8 or a CJK encoding is used, babel has to be called
- // for foreign languages
- if (!lang_opts.empty())
- tmp = string("\\usepackage[") + lang_opts + "]{babel}";
- else
- tmp.clear();
- }
- return tmp;
+ // 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;
}