#include "ParagraphParameters.h"
#include "TextClass.h"
#include "TexRow.h"
-#include "VSpace.h"
#include "insets/InsetBibitem.h"
#include "insets/InsetArgument.h"
: priorpit->getParLanguage(bparams))
: doc_language;
- bool const use_pg = runparams.use_polyglossia;
- string const par_lang = use_pg ?
+ bool const use_polyglossia = runparams.use_polyglossia;
+ string const par_lang = use_polyglossia ?
getPolyglossiaEnvName(data.par_language) : data.par_language->babel();
- string const prev_par_lang = use_pg ?
+ string const prev_par_lang = use_polyglossia ?
getPolyglossiaEnvName(prev_par_language) : prev_par_language->babel();
- string const doc_lang = use_pg ?
+ string const doc_lang = use_polyglossia ?
getPolyglossiaEnvName(doc_language) : doc_language->babel();
- string const lang_begin_command = use_pg ?
+ string const lang_begin_command = use_polyglossia ?
"\\begin{$$lang}" : lyxrc.language_command_begin;
- string const lang_end_command = use_pg ?
+ string const lang_end_command = use_polyglossia ?
"\\end{$$lang}" : lyxrc.language_command_end;
if (par_lang != prev_par_lang) {
lang_begin_command,
"$$lang",
par_lang));
- if (runparams.use_polyglossia
+ if (use_polyglossia
&& !data.par_language->polyglossiaOpts().empty())
os << "["
<< from_ascii(data.par_language->polyglossiaOpts())
// This is for debugging purpose at the end.
pit_type const par_begin = pit;
for (; pit < runparams.par_end; ++pit) {
-
ParagraphList::const_iterator par = paragraphs.constIterator(pit);
// check first if this is an higher depth paragraph.
// be two for Standard paragraphs that are depth-increment'ed to be
// output correctly. However, tables can also be paragraphs so
// don't adjust them.
- //
// FIXME (Lgb): Will it ever harm to have one '\n' too
// many? i.e. that we sometimes will have
}
}
- if (!reqargs && ilist.size() == 0)
+ if (!reqargs && ilist.empty())
return;
bool const have_optional_args = ilist.size() > reqargs;
: outer_language;
- bool const use_pg = runparams.use_polyglossia;
- string const par_lang = use_pg ?
+ bool const use_polyglossia = runparams.use_polyglossia;
+ string const par_lang = use_polyglossia ?
getPolyglossiaEnvName(par_language): par_language->babel();
- string const prev_lang = use_pg ?
+ string const prev_lang = use_polyglossia ?
getPolyglossiaEnvName(prev_language) : prev_language->babel();
- string const doc_lang = use_pg ?
+ string const doc_lang = use_polyglossia ?
getPolyglossiaEnvName(doc_language) : doc_language->babel();
- string const outer_lang = use_pg ?
+ string const outer_lang = use_polyglossia ?
getPolyglossiaEnvName(outer_language) : outer_language->babel();
- string const lang_begin_command = use_pg ?
+ string const lang_begin_command = use_polyglossia ?
"\\begin{$$lang}" : lyxrc.language_command_begin;
- string const lang_end_command = use_pg ?
+ string const lang_end_command = use_polyglossia ?
"\\end{$$lang}" : lyxrc.language_command_end;
if (par_lang != prev_lang
// language paragraph should appear within an \L or \R (in addition
// to, outside of, the normal language switch commands).
// This behavior is not correct for ArabTeX, though.
- if (!runparams.use_polyglossia
+ if (!use_polyglossia
// not for ArabTeX
&& par_language->lang() != "arabic_arabtex"
&& outer_language->lang() != "arabic_arabtex"
os << "\\L{";
}
// With CJK, the CJK tag has to be closed first (see below)
- if (runparams.encoding->package() != Encoding::CJK) {
+ if (runparams.encoding->package() != Encoding::CJK
+ && !par_lang.empty()) {
os << from_ascii(subst(
lang_begin_command,
"$$lang",
par_lang));
- if (runparams.use_polyglossia
+ if (use_polyglossia
&& !par_language->polyglossiaOpts().empty())
os << "["
<< from_ascii(par_language->polyglossiaOpts())
os << "%\n";
}
// With CJK, the CJK tag had to be closed first (see above)
- if (runparams.encoding->package() == Encoding::CJK) {
+ if (runparams.encoding->package() == Encoding::CJK
+ && !par_lang.empty()) {
os << from_ascii(subst(
lang_begin_command,
"$$lang",
}
bool pending_newline = false;
+ bool unskip_newline = false;
switch (style.latextype) {
case LATEX_ITEM_ENVIRONMENT:
case LATEX_LIST_ENVIRONMENT:
// Closing the language is needed for the last paragraph; it is also
// needed if we're within an \L or \R that we may have opened above (not
// necessarily in this paragraph) and are about to close.
- bool closing_rtl_ltr_environment = !runparams.use_polyglossia
+ bool closing_rtl_ltr_environment = !use_polyglossia
// not for ArabTeX
&& (par_language->lang() != "arabic_arabtex"
&& outer_language->lang() != "arabic_arabtex")
|| (runparams.isLastPar && par_language->babel() != outer_language->babel()));
if (closing_rtl_ltr_environment
- || (runparams.isLastPar && par_language->babel() != outer_language->babel())) {
+ || (runparams.isLastPar
+ && ((!use_polyglossia && par_language->babel() != outer_language->babel())
+ || (use_polyglossia && par_language->polyglossia() != outer_language->polyglossia())))) {
// Since \selectlanguage write the language to the aux file,
// we need to reset the language at the end of footnote or
// float.
(runparams.isLastPar && runparams.master_language)
? runparams.master_language
: outer_language;
- string const current_lang = runparams.use_polyglossia
+ string const current_lang = use_polyglossia
? getPolyglossiaEnvName(current_language)
: current_language->babel();
if (!current_lang.empty()) {
"$$lang",
current_lang));
pending_newline = true;
+ unskip_newline = true;
}
} else if (!par_lang.empty()) {
os << from_ascii(subst(
"$$lang",
par_lang));
pending_newline = true;
+ unskip_newline = true;
}
}
}
if (closing_rtl_ltr_environment)
os << "}";
- if (pending_newline)
+ if (pending_newline) {
+ if (unskip_newline)
+ // prevent unwanted whitespace
+ os << '%';
os << '\n';
+ }
// if this is a CJK-paragraph and the next isn't, close CJK
// also if the next paragraph is a multilingual environment (because of nesting)