l_margin = leftMargin(max_width, newpar);
// Remove the parindent that has been added
// if the paragraph was empty.
- if (pars[newpar].empty()) {
+ if (pars[newpar].empty() &&
+ buffer.params().paragraph_separation ==
+ BufferParams::ParagraphIndentSeparation) {
docstring pi = pars[newpar].layout().parindent;
l_margin -= theFontMetrics(
buffer.params().getFont()).signedWidth(pi);
// This happens after sections or environments in standard classes.
// We have to check the previous layout at same depth.
- if (tclass.isDefaultLayout(par.layout()) && pit > 0
- && pars[pit - 1].getDepth() >= par.getDepth()) {
+ if (buffer.params().paragraph_separation ==
+ BufferParams::ParagraphSkipSeparation)
+ parindent.erase();
+ else if (pit > 0 && pars[pit - 1].getDepth() >= par.getDepth()) {
pit_type prev = text_->depthHook(pit, par.getDepth());
- if (pars[prev < pit ? prev : pit - 1].layout().nextnoindent)
+ if (par.layout() == pars[prev].layout()) {
+ if (prev != pit - 1
+ && pars[pit - 1].layout().nextnoindent)
+ parindent.erase();
+ } else if (pars[prev].layout().nextnoindent)
parindent.erase();
}
}
-static void finishEnvironment(Buffer const & buf, Text const & text,
- pit_type nextpit, otexstream & os,
- OutputParams const & runparams,
+static void finishEnvironment(otexstream & os, OutputParams const & runparams,
TeXEnvironmentData const & data)
{
if (open_encoding_ == CJK && data.cjk_nested) {
}
// Check whether we should output a blank line after the environment
- DocumentClass const & tclass = buf.params().documentClass();
- ParagraphList const & pars = text.paragraphs();
- bool next_style_is_default = (nextpit >= runparams.par_end) ? false
- : tclass.isDefaultLayout(pars.constIterator(nextpit)->layout());
- if (!data.style->nextnoindent && next_style_is_default)
+ if (!data.style->nextnoindent)
os << '\n';
}
prepareEnvironment(buf, text, par, os, runparams);
// Recursive call to TeXEnvironment!
TeXEnvironment(buf, text, runparams, pit, os);
- finishEnvironment(buf, text, pit + 1, os, runparams, data);
+ finishEnvironment(os, runparams, data);
}
if (pit != runparams.par_end)
prepareEnvironment(buf, text, par, os, runparams);
// pit can be changed in TeXEnvironment.
TeXEnvironment(buf, text, runparams, pit, os);
- finishEnvironment(buf, text, pit + 1, os, runparams, data);
+ finishEnvironment(os, runparams, data);
}
if (pit == runparams.par_end) {