// Do not output empty environments if the whole paragraph has
// been deleted with ct and changes are not output.
+ bool output_changes;
+ if (runparams.for_searchAdv == OutputParams::NoSearch)
+ output_changes = buf.params().output_changes;
+ else
+ output_changes = (runparams.for_searchAdv == OutputParams::SearchWithDeleted);
if (size_t(pit + 1) < paragraphs.size()) {
ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);
Paragraph const & cpar = paragraphs.at(pit);
if ((par->layout() != nextpar->layout()
|| par->params().depth() == nextpar->params().depth()
|| par->params().leftIndent() == nextpar->params().leftIndent())
- && !runparams.for_search && !cpar.empty()
- && cpar.isDeleted(0, cpar.size()) && !buf.params().output_changes) {
- if (!buf.params().output_changes && !cpar.parEndChange().deleted())
+ && !cpar.empty()
+ && cpar.isDeleted(0, cpar.size()) && !output_changes) {
+ if (!output_changes && !cpar.parEndChange().deleted())
os << '\n' << '\n';
continue;
}
}
}
}
- if (runparams.for_search && argnr > 1) {
+ if ((runparams.for_searchAdv != OutputParams::NoSearch) && argnr > 1) {
// Mark end of arguments for findadv() only
os << "\\endarguments{}";
}
break;
case LATEX_ITEM_ENVIRONMENT:
case LATEX_LIST_ENVIRONMENT:
- if (runparams.for_search) {
+ if (runparams.for_searchAdv != OutputParams::NoSearch) {
os << "\\" + style.itemcommand() << "{" << style.latexname() << "}";
}
else {
}
break;
case LATEX_ENVIRONMENT:
- if (runparams.for_search) {
+ if (runparams.for_searchAdv != OutputParams::NoSearch) {
os << "\\latexenvironment{" << style.latexname() << "}{";
}
break;
// Do not output empty commands if the whole paragraph has
// been deleted with ct and changes are not output.
- if (!runparams_in.for_search && style.latextype != LATEX_ENVIRONMENT
+ if ((runparams_in.for_searchAdv != OutputParams::SearchWithDeleted) && style.latextype != LATEX_ENVIRONMENT
&& !par.empty() && par.isDeleted(0, par.size()) && !bparams.output_changes)
return;
}
}
Language const * const prev_language =
- runparams_in.for_search
+ runparams_in.for_searchAdv != OutputParams::NoSearch
? languages.getLanguage("ignore")
: (prior_nontitle_par && !prior_nontitle_par->isPassThru())
? (use_prev_env_language
&& outer_language->rightToLeft()
&& !par_language->rightToLeft();
bool const localswitch =
- (runparams_in.for_search
+ (runparams_in.for_searchAdv != OutputParams::NoSearch
|| text.inset().forceLocalFontSwitch()
|| (using_begin_end && text.inset().forcePlainLayout())
|| in_polyglossia_rtl_env)
bool const localswitch_needed = localswitch && par_lang != outer_lang;
// localswitches need to be closed and reopened at each par
- if (runparams_in.for_search || ((par_lang != prev_lang || localswitch_needed)
+ if ((runparams_in.for_searchAdv != OutputParams::NoSearch) || ((par_lang != prev_lang || localswitch_needed)
// check if we already put language command in TeXEnvironment()
&& !(style.isEnvironment()
&& (pit == 0 || (priorpar->layout() != par.layout()
// With CJK, the CJK tag has to be closed first (see below)
if ((runparams.encoding->package() != Encoding::CJK
|| bparams.useNonTeXFonts
- || runparams.for_search)
+ || (runparams.for_searchAdv != OutputParams::NoSearch))
&& (par_lang != openLanguageName(state) || localswitch || intitle_command)
&& !par_lang.empty()) {
string bc = use_polyglossia ?
// when the paragraph uses CJK, the language has to be closed earlier
if ((font.language()->encoding()->package() != Encoding::CJK)
|| bparams.useNonTeXFonts
- || runparams_in.for_search) {
+ || (runparams_in.for_searchAdv != OutputParams::NoSearch)) {
if (lang_end_command.empty()) {
// If this is a child, we should restore the
// master language after the last paragraph.
// Note from JMarc: we will re-add a \n explicitly in
// TeXEnvironment, because it is needed in this case
if (nextpar && !os.afterParbreak() && !last_was_separator) {
- Layout const & next_layout = nextpar->layout();
if (!text.inset().getLayout().parbreakIgnored() && !merged_par)
// Make sure to start a new line
os << breakln;
// A newline '\n' is always output before a command,
// so avoid doubling it.
+ Layout const & next_layout = nextpar->layout();
if (!next_layout.isCommand()) {
// Here we now try to avoid spurious empty lines by
// outputting a paragraph break only if: (case 1) the
&& tclass.isDefaultLayout(next_layout))) {
// and omit paragraph break if it has been deleted with ct
// and changes are not shown in output
- if (!merged_par)
- os << '\n';
+ if (!merged_par) {
+ if (runparams.isNonLong)
+ // This is to allow parbreak in multirow
+ // It could also be used for other non-long
+ // contexts
+ os << "\\endgraf\n";
+ else
+ os << '\n';
+ }
}
}
}
// Do not output empty environments if the whole paragraph has
// been deleted with ct and changes are not output.
+ bool output_changes;
+ if (runparams.for_searchAdv == OutputParams::NoSearch)
+ output_changes = bparams.output_changes;
+ else
+ output_changes = (runparams.for_searchAdv == OutputParams::SearchWithDeleted);
if (size_t(pit + 1) < paragraphs.size()) {
ParagraphList::const_iterator nextpar = paragraphs.iterator_at(pit + 1);
Paragraph const & cpar = paragraphs.at(pit);
if ((par->layout() != nextpar->layout()
|| par->params().depth() == nextpar->params().depth()
|| par->params().leftIndent() == nextpar->params().leftIndent())
- && !runparams.for_search && !cpar.empty()
- && cpar.isDeleted(0, cpar.size()) && !bparams.output_changes) {
+ && !cpar.empty()
+ && cpar.isDeleted(0, cpar.size()) && !output_changes) {
if (!cpar.parEndChange().deleted())
os << '\n' << '\n';
continue;
} else {
// This is the last par
Paragraph const & cpar = paragraphs.at(pit);
- if (!runparams.for_search && !cpar.empty()
- && cpar.isDeleted(0, cpar.size()) && !bparams.output_changes) {
+ if ( !cpar.empty()
+ && cpar.isDeleted(0, cpar.size()) && !output_changes) {
if (!cpar.parEndChange().deleted())
os << '\n' << '\n';
continue;
|| oldEnc.package() == Encoding::japanese
|| oldEnc.package() == Encoding::none
|| newEnc.package() == Encoding::none
- || runparams.for_search)
+ || (runparams.for_searchAdv != OutputParams::NoSearch))
return make_pair(false, 0);
// FIXME We ignore encoding switches from/to encodings that do
// neither support the inputenc package nor the CJK package here.