Introduce the latexpar separator.

This is the same as the parbreak separator and is represented on screen
as the old parbreak. Old parbreak separators are converted to latexpar
separators when they are used for introducing blank lines in the
latex output rather than for separating environments.
Instead, parbreak separators are now represented on screen by a
double line. In essence, latexpar and parbreak separators produce
the same output but are represented differently on screen.
The context menu does not account for latexpar separators and only
"true" separators can be turned each into the other one.
This commit is contained in:
Enrico Forestieri 2016-04-06 05:25:27 +02:00
parent b509e072e8
commit d4ca8d7404
24 changed files with 95 additions and 27 deletions

View File

@ -11,6 +11,16 @@ adjustments are made to tex2lyx and bugs are fixed in lyx2lyx.
----------------------- -----------------------
2016-04-05 Enrico Forestieri <forenr@lyx.org>
* Format incremented to 508
New kind of Separator inset (latexpar). The old parbreak separator
used specifically to introduce a LaTeX paragraph break in the output
(and thus not as a proper separator) is turned into a latexpar kind.
The only difference with the parbreak kind is the representation
on screen. The new latexpar kind is represented by the same symbol
used previously for the parbreak one, while the latter is now
represented as a double line.
2016-03-25 Jean-Marc Lasgouttes <lasgouttes@lyx.org> 2016-03-25 Jean-Marc Lasgouttes <lasgouttes@lyx.org>
* Format incremented to 507 * Format incremented to 507
Convert caption subtype LongTableNoNumber to Unnumbered Convert caption subtype LongTableNoNumber to Unnumbered

View File

@ -86,7 +86,7 @@ format_relation = [("0_06", [200], minor_versions("0.6" , 4)),
("1_6", list(range(277,346)), minor_versions("1.6" , 10)), ("1_6", list(range(277,346)), minor_versions("1.6" , 10)),
("2_0", list(range(346,414)), minor_versions("2.0" , 8)), ("2_0", list(range(346,414)), minor_versions("2.0" , 8)),
("2_1", list(range(414,475)), minor_versions("2.1" , 0)), ("2_1", list(range(414,475)), minor_versions("2.1" , 0)),
("2_2", list(range(475,508)), minor_versions("2.2" , 0)) ("2_2", list(range(475,509)), minor_versions("2.2" , 0))
] ]
#################################################################### ####################################################################

View File

@ -334,6 +334,46 @@ def revert_separator(document):
i = i + 1 i = i + 1
def convert_parbreak(document):
"""
Convert parbreak separators not specifically used to separate
environments to latexpar separators.
"""
parbreakinset = "\\begin_inset Separator parbreak"
i = 0
while 1:
i = find_token(document.body, parbreakinset, i)
if i == -1:
return
lay = get_containing_layout(document.body, i)
if lay == False:
document.warning("Malformed LyX document: Can't convert separator inset at line " + str(i))
i += 1
continue
if lay[0] == "Standard":
# Convert only if not alone in the paragraph
k1 = find_nonempty_line(document.body, lay[1] + 1, i + 1)
k2 = find_nonempty_line(document.body, i + 1, lay[2])
if (k1 < i) or (k2 > i + 1) or not check_token(document.body[i], parbreakinset):
document.body[i] = document.body[i].replace("parbreak", "latexpar")
else:
document.body[i] = document.body[i].replace("parbreak", "latexpar")
i += 1
def revert_parbreak(document):
"""
Revert latexpar separators to parbreak separators.
"""
i = 0
while 1:
i = find_token(document.body, "\\begin_inset Separator latexpar", i)
if i == -1:
return
document.body[i] = document.body[i].replace("latexpar", "parbreak")
i += 1
def revert_smash(document): def revert_smash(document):
" Set amsmath to on if smash commands are used " " Set amsmath to on if smash commands are used "
@ -2284,10 +2324,12 @@ convert = [
[504, [convert_save_props]], [504, [convert_save_props]],
[505, []], [505, []],
[506, [convert_info_tabular_feature]], [506, [convert_info_tabular_feature]],
[507, [convert_longtable_label]] [507, [convert_longtable_label]],
[508, [convert_parbreak]]
] ]
revert = [ revert = [
[507, [revert_parbreak]],
[506, [revert_longtable_label]], [506, [revert_longtable_label]],
[505, [revert_info_tabular_feature]], [505, [revert_info_tabular_feature]],
[504, []], [504, []],

View File

@ -635,9 +635,9 @@ void LyXAction::init()
{ LFUN_NEWLINE_INSERT, "newline-insert", Noop, Edit }, { LFUN_NEWLINE_INSERT, "newline-insert", Noop, Edit },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_SEPARATOR_INSERT * \var lyx::FuncCode lyx::LFUN_SEPARATOR_INSERT
* \li Action: Inserts an environment separator or paragraph break. * \li Action: Inserts an environment separator or latex paragraph break.
* \li Syntax: separator-insert [<ARG>] * \li Syntax: separator-insert [<ARG>]
* \li Params: <ARG>: <plain|parbreak> default: plain * \li Params: <ARG>: <plain|parbreak|latexpar> default: plain
* \li Origin: ef, 2 May 2014 * \li Origin: ef, 2 May 2014
* \endvar * \endvar
*/ */

View File

@ -107,6 +107,8 @@ Inset * createInsetHelper(Buffer * buf, FuncRequest const & cmd)
inp.kind = InsetSeparatorParams::PLAIN; inp.kind = InsetSeparatorParams::PLAIN;
else if (name == "parbreak") else if (name == "parbreak")
inp.kind = InsetSeparatorParams::PARBREAK; inp.kind = InsetSeparatorParams::PARBREAK;
else if (name == "latexpar")
inp.kind = InsetSeparatorParams::LATEXPAR;
else { else {
lyxerr << "Wrong argument for LyX function 'separator-insert'." << endl; lyxerr << "Wrong argument for LyX function 'separator-insert'." << endl;
break; break;

View File

@ -52,6 +52,9 @@ void InsetSeparatorParams::write(ostream & os) const
case InsetSeparatorParams::PARBREAK: case InsetSeparatorParams::PARBREAK:
os << "parbreak"; os << "parbreak";
break; break;
case InsetSeparatorParams::LATEXPAR:
os << "latexpar";
break;
} }
} }
@ -65,6 +68,8 @@ void InsetSeparatorParams::read(Lexer & lex)
kind = InsetSeparatorParams::PLAIN; kind = InsetSeparatorParams::PLAIN;
else if (token == "parbreak") else if (token == "parbreak")
kind = InsetSeparatorParams::PARBREAK; kind = InsetSeparatorParams::PARBREAK;
else if (token == "latexpar")
kind = InsetSeparatorParams::LATEXPAR;
else else
lex.printError("Unknown kind: `$$Token'"); lex.printError("Unknown kind: `$$Token'");
} }
@ -139,6 +144,7 @@ void InsetSeparator::latex(otexstream & os, OutputParams const &) const
os << breakln << "%\n"; os << breakln << "%\n";
break; break;
case InsetSeparatorParams::PARBREAK: case InsetSeparatorParams::PARBREAK:
case InsetSeparatorParams::LATEXPAR:
os << breakln << "\n"; os << breakln << "\n";
break; break;
default: default:
@ -177,7 +183,7 @@ void InsetSeparator::metrics(MetricsInfo & mi, Dimension & dim) const
dim.asc = fm.maxAscent(); dim.asc = fm.maxAscent();
dim.des = fm.maxDescent(); dim.des = fm.maxDescent();
dim.wid = fm.width('n'); dim.wid = fm.width('n');
if (params_.kind == InsetSeparatorParams::PLAIN) if (params_.kind != InsetSeparatorParams::LATEXPAR)
dim.wid *= 8; dim.wid *= 8;
} }
@ -194,7 +200,7 @@ void InsetSeparator::draw(PainterInfo & pi, int x, int y) const
int xp[7]; int xp[7];
int yp[7]; int yp[7];
if (params_.kind == InsetSeparatorParams::PLAIN) { if (params_.kind != InsetSeparatorParams::LATEXPAR) {
yp[0] = int(y - 0.500 * asc * 0.75); yp[0] = int(y - 0.500 * asc * 0.75);
yp[1] = yp[0]; yp[1] = yp[0];
@ -202,6 +208,12 @@ void InsetSeparator::draw(PainterInfo & pi, int x, int y) const
xp[1] = int(x + wid * 8); xp[1] = int(x + wid * 8);
pi.pain.lines(xp, yp, 2, ColorName()); pi.pain.lines(xp, yp, 2, ColorName());
if (params_.kind == InsetSeparatorParams::PARBREAK) {
yp[0] += 0.25 * asc * 0.75;
yp[1] = yp[0];
pi.pain.lines(xp, yp, 2, ColorName());
}
} else { } else {
yp[0] = int(y - 0.500 * asc * 0.5); yp[0] = int(y - 0.500 * asc * 0.5);
yp[1] = int(y - 0.250 * asc * 0.5); yp[1] = int(y - 0.250 * asc * 0.5);
@ -266,6 +278,9 @@ void InsetSeparator::draw(PainterInfo & pi, int x, int y) const
string InsetSeparator::contextMenuName() const string InsetSeparator::contextMenuName() const
{ {
if (params_.kind == InsetSeparatorParams::LATEXPAR)
return string();
return "context-separator"; return "context-separator";
} }

View File

@ -22,10 +22,9 @@ class InsetSeparatorParams
public: public:
/// The different kinds of separators we support /// The different kinds of separators we support
enum Kind { enum Kind {
///
PLAIN, PLAIN,
/// PARBREAK,
PARBREAK LATEXPAR
}; };
/// ///
InsetSeparatorParams() : kind(PLAIN) {} InsetSeparatorParams() : kind(PLAIN) {}

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -1,5 +1,5 @@
#LyX file created by tex2lyx 2.2 #LyX file created by tex2lyx 2.2
\lyxformat 507 \lyxformat 508
\begin_document \begin_document
\begin_header \begin_header
\save_transient_properties true \save_transient_properties true

View File

@ -32,8 +32,8 @@ extern char const * const lyx_version_info;
// Do not remove the comment below, so we get merge conflict in // Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own. // independent branches. Instead add your own.
#define LYX_FORMAT_LYX 507 // lasgouttes: rename LongTableNoNumber to Unnumbered #define LYX_FORMAT_LYX 508 // forenr: convert parbreak to latexpar
#define LYX_FORMAT_TEX2LYX 507 #define LYX_FORMAT_TEX2LYX 508
#if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX #if LYX_FORMAT_TEX2LYX != LYX_FORMAT_LYX
#ifndef _MSC_VER #ifndef _MSC_VER