Output a parbreak after a command.

This is what LyX was previously doing. It has no effect on vertical
spacing but, for example, sectioning commands stand out on the output.
The parbreak is not output if an environment follows or the alignment
of the current or next paragraph is changed.
Also remove some superfluous code.
This commit is contained in:
Enrico Forestieri 2014-05-14 22:25:15 +02:00
parent 1821c6d8a3
commit 7d5b1fb840

View File

@ -288,21 +288,6 @@ void TeXEnvironment(Buffer const & buf, Text const & text,
if (!style.isEnvironment()) {
// This is a standard paragraph, no need to call TeXEnvironment.
TeXOnePar(buf, text, pit, os, runparams);
// Unless the current or following paragraph are inside
// \begin..\end tags and the nesting layout is not of
// an itemize kind, we have to output a paragraph break
// (we already are at the beginning of a new line)
if (pit + 1 < runparams.par_end) {
ParagraphList::const_iterator nextpar =
paragraphs.constIterator(pit + 1);
if (nextpar->layout() == current_layout
&& nextpar->getDepth() == current_depth
&& current_layout.latextype != LATEX_ITEM_ENVIRONMENT
&& current_layout.latextype != LATEX_LIST_ENVIRONMENT
&& par->getAlign() == style.align
&& nextpar->getAlign() == nextpar->layout().align)
os << '\n';
}
continue;
}
@ -1026,16 +1011,23 @@ void TeXOnePar(Buffer const & buf,
if (nextpar && !par.isEnvSeparator(par.size() - 1)) {
// Make sure to start a new line
os << breakln;
// Here we now try to avoid spurious empty lines by outputting
// a paragraph break only if: (case 1) the paragraph style
// allows parbreaks and no \begin, \end or \item tags are
// going to follow (i.e., if the next isn't the first
// or the current isn't the last paragraph of an environment
// or itemize) and the depth and alignment of the following
// paragraph is unchanged, or (case 2) the following is a
// non-environment paragraph whose depth is increased but
// whose alignment is unchanged.
Layout const & next_layout = nextpar->layout();
// A newline '\n' is always output before a command,
// so avoid doubling it.
if (!next_layout.isCommand()) {
// Here we now try to avoid spurious empty lines by
// outputting a paragraph break only if: (case 1) the
// paragraph style allows parbreaks and no \begin, \end
// or \item tags are going to follow (i.e., if the next
// isn't the first or the current isn't the last
// paragraph of an environment or itemize) and the
// depth and alignment of the following paragraph is
// unchanged, or (case 2) the following is a
// non-environment paragraph whose depth is increased
// but whose alignment is unchanged, or (case 3) the
// paragraph is a command not followed by an environment
// and the alignment of the current and next paragraph
// is unchanged.
if ((style == next_layout
&& !style.parbreak_is_newline
&& style.latextype != LATEX_ITEM_ENVIRONMENT
@ -1045,10 +1037,15 @@ void TeXOnePar(Buffer const & buf,
&& nextpar->getAlign() == par.getAlign())
|| (!next_layout.isEnvironment()
&& nextpar->getDepth() > par.getDepth()
&& nextpar->getAlign() == par.getAlign())) {
&& nextpar->getAlign() == par.getAlign())
|| (style.isCommand()
&& !next_layout.isEnvironment()
&& style.align == par.getAlign()
&& next_layout.align == nextpar->getAlign())) {
os << '\n';
}
}
}
LYXERR(Debug::LATEX, "TeXOnePar for paragraph " << pit << " done; ptr "
<< &par << " next " << nextpar);