del document.header[i]
+def revert_nopagebreak(document):
+ while True:
+ i = find_token(document.body, "\\begin_inset Newpage nopagebreak")
+ if i == -1:
+ return
+ end = find_end_of_inset(document.body, i)
+ if end == 1:
+ document.warning("Malformed LyX document: Could not find end of Newpage inset.")
+ continue
+ subst = put_cmd_in_ert("\\nopagebreak{}")
+ document.body[i : end + 1] = subst
+
+
##
# Conversion hub
#
[595, []],
[596, [convert_parskip]],
[597, [convert_libertinus_rm_fonts]],
- [598, []]
+ [598, []],
+ [599, []]
]
-revert = [[597, [revert_docbook_table_output]],
+revert = [[598, [revert_nopagebreak]],
+ [597, [revert_docbook_table_output]],
[596, [revert_libertinus_rm_fonts,revert_libertinus_sftt_fonts]],
[595, [revert_parskip,revert_line_vspaces]],
[594, [revert_ams_spaces]],
case InsetNewpageParams::CLEARDOUBLEPAGE:
os << "cleardoublepage";
break;
+ case InsetNewpageParams::NOPAGEBREAK:
+ os << "nopagebreak";
+ break;
}
}
kind = InsetNewpageParams::CLEARPAGE;
else if (token == "cleardoublepage")
kind = InsetNewpageParams::CLEARDOUBLEPAGE;
+ else if (token == "nopagebreak")
+ kind = InsetNewpageParams::NOPAGEBREAK;
else
lex.printError("Unknown kind");
}
void InsetNewpage::metrics(MetricsInfo & mi, Dimension & dim) const
{
+ if (params_.kind == InsetNewpageParams::NOPAGEBREAK) {
+ frontend::FontMetrics const & fm = theFontMetrics(mi.base.font);
+ dim.asc = fm.maxAscent();
+ dim.des = fm.maxDescent();
+ dim.wid = 3 * fm.width('n');
+ return;
+ }
+
dim.asc = defaultRowHeight();
dim.des = defaultRowHeight();
dim.wid = mi.base.textwidth;
void InsetNewpage::draw(PainterInfo & pi, int x, int y) const
{
+ if (params_.kind == InsetNewpageParams::NOPAGEBREAK) {
+
+ FontInfo font;
+ font.setColor(ColorName());
+
+ frontend::FontMetrics const & fm = theFontMetrics(pi.base.font);
+ int const wid = 3 * fm.width('n');
+ int const asc = fm.maxAscent();
+
+ int xp[3];
+ int yp[3];
+
+ //left side arrow
+ yp[0] = int(y - 0.875 * asc * 0.75);
+ yp[1] = int(y - 0.500 * asc * 0.75);
+ yp[2] = int(y - 0.125 * asc * 0.75);
+ xp[0] = int(x + wid * 0.25);
+ xp[1] = int(x + wid * 0.4);
+ xp[2] = int(x + wid * 0.25);
+ pi.pain.lines(xp, yp, 3, ColorName());
+
+ yp[0] = yp[1] = int(y - 0.500 * asc * 0.75);
+ xp[0] = int(x + wid * 0.03);
+ xp[1] = int(x + wid * 0.4);
+ pi.pain.lines(xp, yp, 2, ColorName());
+
+ //right side arrow
+ yp[0] = int(y - 0.875 * asc * 0.75);
+ yp[1] = int(y - 0.500 * asc * 0.75);
+ yp[2] = int(y - 0.125 * asc * 0.75);
+ xp[0] = int(x + wid * 0.75);
+ xp[1] = int(x + wid * 0.6);
+ xp[2] = int(x + wid * 0.75);
+ pi.pain.lines(xp, yp, 3, ColorName());
+
+ yp[0] = yp[1] = int(y - 0.500 * asc * 0.75);
+ xp[0] = int(x + wid * 0.97);
+ xp[1] = int(x + wid * 0.6);
+ pi.pain.lines(xp, yp, 2, ColorName());
+
+ //mid-rule
+ xp[0] = xp[1] = int(x + wid * 0.5);;
+ yp[0] = int(y - 0.875 * asc * 0.75);
+ yp[1] = int(y - 0.125 * asc * 0.75);
+ pi.pain.lines(xp, yp, 2, ColorName());
+ return;
+ }
+
using frontend::Painter;
FontInfo font;
case InsetNewpageParams::CLEARDOUBLEPAGE:
return _("Clear Double Page");
break;
+ case InsetNewpageParams::NOPAGEBREAK:
+ return _("No Page Break");
+ break;
default:
return _("New Page");
break;
{
switch (params_.kind) {
case InsetNewpageParams::PAGEBREAK:
+ case InsetNewpageParams::NOPAGEBREAK:
return Color_pagebreak;
break;
case InsetNewpageParams::NEWPAGE:
case InsetNewpageParams::CLEARDOUBLEPAGE:
os << "\\cleardoublepage" << termcmd;
break;
+ case InsetNewpageParams::NOPAGEBREAK:
+ os << "\\nopagebreak" << termcmd;
+ break;
default:
os << "\\newpage" << termcmd;
break;
int InsetNewpage::plaintext(odocstringstream & os,
OutputParams const &, size_t) const
{
+ if (params_.kind == InsetNewpageParams::NOPAGEBREAK)
+ return 0;
os << '\n';
return PLAINTEXT_NEWLINE;
}
void InsetNewpage::docbook(XMLStream & os, OutputParams const &) const
{
- os << xml::CR();
+ if (params_.kind != InsetNewpageParams::NOPAGEBREAK)
+ os << xml::CR();
}
docstring InsetNewpage::xhtml(XMLStream & xs, OutputParams const &) const
{
- xs << xml::CompTag("br");
+ if (params_.kind != InsetNewpageParams::NOPAGEBREAK)
+ xs << xml::CompTag("br");
return docstring();
}