support for \pagebreak:

- rename former "pagebreak" to "newpage" since it produces a \newpage
- new LFUN
- menu entry
- tex2lyx support
- fileformat change


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21732 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Uwe Stöhr 2007-11-23 02:10:00 +00:00
parent eca6ca3798
commit 97aa558cac
25 changed files with 92 additions and 55 deletions

View File

@ -1,6 +1,9 @@
LyX file-format changes LyX file-format changes
----------------------- -----------------------
2007-11-23 Uwe Stöhr <uwestoehr@web.de>
* Format incremented to 300: support for \pagebreak
2007-11-01 Uwe Stöhr <uwestoehr@web.de> 2007-11-01 Uwe Stöhr <uwestoehr@web.de>
* Format incremented to 299: support for hyperlink types * Format incremented to 299: support for hyperlink types

View File

@ -1012,10 +1012,10 @@ src_insets_header_files = Split('''
InsetListingsParams.h InsetListingsParams.h
InsetMarginal.h InsetMarginal.h
InsetNewline.h InsetNewline.h
InsetNewpage.h
InsetNomencl.h InsetNomencl.h
InsetNote.h InsetNote.h
InsetOptArg.h InsetOptArg.h
InsetPagebreak.h
InsetQuotes.h InsetQuotes.h
InsetRef.h InsetRef.h
InsetSpace.h InsetSpace.h
@ -1068,10 +1068,10 @@ src_insets_files = Split('''
InsetListingsParams.cpp InsetListingsParams.cpp
InsetMarginal.cpp InsetMarginal.cpp
InsetNewline.cpp InsetNewline.cpp
InsetNewpage.cpp
InsetNomencl.cpp InsetNomencl.cpp
InsetNote.cpp InsetNote.cpp
InsetOptArg.cpp InsetOptArg.cpp
InsetPagebreak.cpp
InsetQuotes.cpp InsetQuotes.cpp
InsetRef.cpp InsetRef.cpp
InsetSpace.cpp InsetSpace.cpp

View File

@ -198,17 +198,14 @@ def checkDTLtools():
def checkLatex(dtl_tools): def checkLatex(dtl_tools):
''' Check latex, return lyx_check_config ''' ''' Check latex, return lyx_check_config '''
path, LATEX = checkProg('a Latex2e program', ['platex $$i', 'latex $$i', 'latex2e $$i'])
path, PPLATEX = checkProg('a DVI postprocessing program', ['pplatex $$i'])
# use LATEX to convert from latex to dvi if PPLATEX is not available
if PPLATEX == '':
PPLATEX = LATEX
if dtl_tools: if dtl_tools:
# Windows only: DraftDVI # Windows only: DraftDVI
addToRC(r'''\converter latex dvi2 "%s" "latex" converter_entry = r'''\converter latex dvi2 "%%" "latex"
\converter dvi2 dvi "python -tt $$s/scripts/clean_dvi.py $$i $$o" ""''' % PPLATEX) \converter dvi2 dvi "python -tt $$s/scripts/clean_dvi.py $$i $$o" ""'''
else: else:
addToRC(r'\converter latex dvi "%s" "latex"' % PPLATEX) converter_entry = r'\converter latex dvi "%%" "latex"'
path, LATEX = checkProg('a Latex2e program', ['pplatex $$i', 'platex $$i', 'latex $$i', 'latex2e $$i'],
rc_entry = [converter_entry])
# no latex # no latex
if LATEX != '': if LATEX != '':
# Check if latex is usable # Check if latex is usable
@ -854,7 +851,4 @@ Options:
bool_docbook, bool_linuxdoc) bool_docbook, bool_linuxdoc)
checkModulesConfig() #lyx_check_config and LATEX != '') checkModulesConfig() #lyx_check_config and LATEX != '')
removeTempFiles() removeTempFiles()
# The return error code can be 256. Because most systems expect an error code sys.exit(ret)
# in the range 0-127, 256 can be interpretted as 'success'. Because we expect
# a None for success, 'ret is not None' is used to exit.
sys.exit(ret is not None)

View File

@ -80,7 +80,7 @@ format_relation = [("0_06", [200], minor_versions("0.6" , 4)),
("1_3", [221], minor_versions("1.3" , 7)), ("1_3", [221], minor_versions("1.3" , 7)),
("1_4", range(222,246), minor_versions("1.4" , 5)), ("1_4", range(222,246), minor_versions("1.4" , 5)),
("1_5", range(246,277), minor_versions("1.5" , 2)), ("1_5", range(246,277), minor_versions("1.5" , 2)),
("1_6", range(277,300), minor_versions("1.6" , 0))] # Uwe: Hyperlink types ("1_6", range(277,301), minor_versions("1.6" , 0))] # Uwe: \pagebreak
def formats_list(): def formats_list():

View File

@ -788,6 +788,17 @@ def revert_hyperlinktype(document):
i = i + 1 i = i + 1
def revert_pagebreak(document):
'Reverts pagebreak to newpage'
i = 0
while True:
i = find_token(document.body, "\\pagebreak", i)
if i == -1:
return
document.body[i] = document.body[i].replace("\\pagebreak", "\\newpage")
i = i + 1
## ##
# Conversion hub # Conversion hub
# #
@ -815,10 +826,12 @@ convert = [[277, [fix_wrong_tables]],
[296, [convert_include]], [296, [convert_include]],
[297, [convert_usorbian]], [297, [convert_usorbian]],
[298, []], [298, []],
[299, []] [299, []],
[300, []]
] ]
revert = [[298, [revert_hyperlinktype]], revert = [[299, [revert_pagebreak]],
[298, [revert_hyperlinktype]],
[297, [revert_macro_optional_params]], [297, [revert_macro_optional_params]],
[296, [revert_albanian, revert_lowersorbian, revert_uppersorbian]], [296, [revert_albanian, revert_lowersorbian, revert_uppersorbian]],
[295, [revert_include]], [295, [revert_include]],

View File

@ -362,6 +362,7 @@ Menuset
Item "Ligature Break|k" "ligature-break-insert" Item "Ligature Break|k" "ligature-break-insert"
Item "Line Break|B" "break-line" Item "Line Break|B" "break-line"
Separator Separator
Item "New Page|N" "newpage-insert"
Item "Page Break|a" "pagebreak-insert" Item "Page Break|a" "pagebreak-insert"
Item "Clear Page|C" "clearpage-insert" Item "Clear Page|C" "clearpage-insert"
Item "Clear Double Page|D" "cleardoublepage-insert" Item "Clear Double Page|D" "cleardoublepage-insert"

View File

@ -153,7 +153,7 @@ namespace os = support::os;
namespace { namespace {
int const LYX_FORMAT = 299; // Uwe: Hyperlink types int const LYX_FORMAT = 300; // Uwe: \pagebreak
} // namespace anon } // namespace anon

View File

@ -206,6 +206,7 @@ void LyXAction::init()
{ LFUN_BIBTEX_DATABASE_ADD, "bibtex-database-add", Noop, Edit }, { LFUN_BIBTEX_DATABASE_ADD, "bibtex-database-add", Noop, Edit },
{ LFUN_BIBTEX_DATABASE_DEL, "bibtex-database-del", Noop, Edit }, { LFUN_BIBTEX_DATABASE_DEL, "bibtex-database-del", Noop, Edit },
{ LFUN_LINE_INSERT, "line-insert", Noop, Edit }, { LFUN_LINE_INSERT, "line-insert", Noop, Edit },
{ LFUN_NEWPAGE_INSERT, "newpage-insert", Noop, Edit },
{ LFUN_PAGEBREAK_INSERT, "pagebreak-insert", Noop, Edit }, { LFUN_PAGEBREAK_INSERT, "pagebreak-insert", Noop, Edit },
{ LFUN_LANGUAGE, "language", Noop, Edit }, { LFUN_LANGUAGE, "language", Noop, Edit },
{ LFUN_LAYOUT, "layout", Noop, Layout }, { LFUN_LAYOUT, "layout", Noop, Layout },

View File

@ -525,10 +525,10 @@ SOURCEFILESINSETS = \
insets/InsetListingsParams.cpp \ insets/InsetListingsParams.cpp \
insets/InsetMarginal.cpp \ insets/InsetMarginal.cpp \
insets/InsetNewline.cpp \ insets/InsetNewline.cpp \
insets/InsetNewpage.cpp \
insets/InsetNomencl.cpp \ insets/InsetNomencl.cpp \
insets/InsetNote.cpp \ insets/InsetNote.cpp \
insets/InsetOptArg.cpp \ insets/InsetOptArg.cpp \
insets/InsetPagebreak.cpp \
insets/InsetQuotes.cpp \ insets/InsetQuotes.cpp \
insets/InsetRef.cpp \ insets/InsetRef.cpp \
insets/InsetSpace.cpp \ insets/InsetSpace.cpp \
@ -581,10 +581,10 @@ HEADERFILESINSETS = \
insets/InsetListingsParams.h \ insets/InsetListingsParams.h \
insets/InsetMarginal.h \ insets/InsetMarginal.h \
insets/InsetNewline.h \ insets/InsetNewline.h \
insets/InsetNewpage.h \
insets/InsetNomencl.h \ insets/InsetNomencl.h \
insets/InsetNote.h \ insets/InsetNote.h \
insets/InsetOptArg.h \ insets/InsetOptArg.h \
insets/InsetPagebreak.h \
insets/InsetQuotes.h \ insets/InsetQuotes.h \
insets/InsetRef.h \ insets/InsetRef.h \
insets/InsetSpace.h \ insets/InsetSpace.h \

View File

@ -58,7 +58,7 @@
#include "insets/InsetHFill.h" #include "insets/InsetHFill.h"
#include "insets/InsetLine.h" #include "insets/InsetLine.h"
#include "insets/InsetNewline.h" #include "insets/InsetNewline.h"
#include "insets/InsetPagebreak.h" #include "insets/InsetNewpage.h"
#include "insets/InsetOptArg.h" #include "insets/InsetOptArg.h"
#include "insets/InsetSpace.h" #include "insets/InsetSpace.h"
#include "insets/InsetSpecialChar.h" #include "insets/InsetSpecialChar.h"
@ -245,6 +245,8 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
} else if (token == "\\lyxline") { } else if (token == "\\lyxline") {
par.insertInset(par.size(), new InsetLine, font, change); par.insertInset(par.size(), new InsetLine, font, change);
} else if (token == "\\newpage") { } else if (token == "\\newpage") {
par.insertInset(par.size(), new InsetNewpage, font, change);
} else if (token == "\\pagebreak") {
par.insertInset(par.size(), new InsetPagebreak, font, change); par.insertInset(par.size(), new InsetPagebreak, font, change);
} else if (token == "\\clearpage") { } else if (token == "\\clearpage") {
par.insertInset(par.size(), new InsetClearPage, font, change); par.insertInset(par.size(), new InsetClearPage, font, change);

View File

@ -1384,6 +1384,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_TOC_INSERT: case LFUN_TOC_INSERT:
case LFUN_HFILL_INSERT: case LFUN_HFILL_INSERT:
case LFUN_LINE_INSERT: case LFUN_LINE_INSERT:
case LFUN_NEWPAGE_INSERT:
case LFUN_PAGEBREAK_INSERT: case LFUN_PAGEBREAK_INSERT:
case LFUN_CLEARPAGE_INSERT: case LFUN_CLEARPAGE_INSERT:
case LFUN_CLEARDOUBLEPAGE_INSERT: case LFUN_CLEARDOUBLEPAGE_INSERT:
@ -2110,6 +2111,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
case LFUN_DATE_INSERT: case LFUN_DATE_INSERT:
case LFUN_SELF_INSERT: case LFUN_SELF_INSERT:
case LFUN_LINE_INSERT: case LFUN_LINE_INSERT:
case LFUN_NEWPAGE_INSERT:
case LFUN_PAGEBREAK_INSERT: case LFUN_PAGEBREAK_INSERT:
case LFUN_CLEARPAGE_INSERT: case LFUN_CLEARPAGE_INSERT:
case LFUN_CLEARDOUBLEPAGE_INSERT: case LFUN_CLEARDOUBLEPAGE_INSERT:

View File

@ -46,7 +46,7 @@
#include "insets/InsetBox.h" #include "insets/InsetBox.h"
#include "insets/InsetBranch.h" #include "insets/InsetBranch.h"
#include "insets/InsetOptArg.h" #include "insets/InsetOptArg.h"
#include "insets/InsetPagebreak.h" #include "insets/InsetNewpage.h"
#include "insets/InsetRef.h" #include "insets/InsetRef.h"
#include "insets/InsetSpace.h" #include "insets/InsetSpace.h"
#include "insets/InsetTabular.h" #include "insets/InsetTabular.h"
@ -93,6 +93,9 @@ Inset * createInset(Buffer & buf, FuncRequest const & cmd)
case LFUN_LINE_INSERT: case LFUN_LINE_INSERT:
return new InsetLine; return new InsetLine;
case LFUN_NEWPAGE_INSERT:
return new InsetNewpage;
case LFUN_PAGEBREAK_INSERT: case LFUN_PAGEBREAK_INSERT:
return new InsetPagebreak; return new InsetPagebreak;

View File

@ -105,7 +105,7 @@ static TranslatorMap const build_translator()
InsetName("listings", LISTINGS_CODE), InsetName("listings", LISTINGS_CODE),
InsetName("info", INFO_CODE), InsetName("info", INFO_CODE),
InsetName("collapsable", COLLAPSABLE_CODE), InsetName("collapsable", COLLAPSABLE_CODE),
InsetName("pagebreak", PAGEBREAK_CODE), InsetName("newpage", NEWPAGE_CODE),
}; };
std::size_t const insetnames_size = std::size_t const insetnames_size =

View File

@ -186,7 +186,7 @@ bool InsetCaption::insetAllowed(InsetCode code) const
case TABULAR_CODE: case TABULAR_CODE:
case WRAP_CODE: case WRAP_CODE:
case CAPTION_CODE: case CAPTION_CODE:
case PAGEBREAK_CODE: case NEWPAGE_CODE:
return false; return false;
default: default:
return InsetText::insetAllowed(code); return InsetText::insetAllowed(code);

View File

@ -118,7 +118,7 @@ enum InsetCode {
/// ///
NOMENCL_PRINT_CODE, NOMENCL_PRINT_CODE,
/// ///
PAGEBREAK_CODE, NEWPAGE_CODE,
/// ///
LISTINGS_CODE, LISTINGS_CODE,
/// ///

View File

@ -691,6 +691,7 @@ bool InsetCollapsable::getStatus(Cursor & cur, FuncRequest const & cmd,
case LFUN_LABEL_INSERT: case LFUN_LABEL_INSERT:
case LFUN_LIGATURE_BREAK_INSERT: case LFUN_LIGATURE_BREAK_INSERT:
case LFUN_LINE_INSERT: case LFUN_LINE_INSERT:
case LFUN_NEWPAGE_INSERT:
case LFUN_PAGEBREAK_INSERT: case LFUN_PAGEBREAK_INSERT:
case LFUN_LAYOUT: case LFUN_LAYOUT:
case LFUN_LAYOUT_PARAGRAPH: case LFUN_LAYOUT_PARAGRAPH:

View File

@ -1,5 +1,5 @@
/** /**
* \file InsetPagebreak.cpp * \file InsetNewpage.cpp
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
@ -10,7 +10,7 @@
#include <config.h> #include <config.h>
#include "InsetPagebreak.h" #include "InsetNewpage.h"
#include "debug.h" #include "debug.h"
#include "gettext.h" #include "gettext.h"
@ -30,19 +30,19 @@ namespace lyx {
using frontend::Painter; using frontend::Painter;
void InsetPagebreak::read(Buffer const &, Lexer &) void InsetNewpage::read(Buffer const &, Lexer &)
{ {
/* Nothing to read */ /* Nothing to read */
} }
void InsetPagebreak::write(Buffer const &, std::ostream & os) const void InsetNewpage::write(Buffer const &, std::ostream & os) const
{ {
os << "\n" << getCmdName() << '\n'; os << "\n" << getCmdName() << '\n';
} }
void InsetPagebreak::metrics(MetricsInfo & mi, Dimension & dim) const void InsetNewpage::metrics(MetricsInfo & mi, Dimension & dim) const
{ {
dim.asc = defaultRowHeight(); dim.asc = defaultRowHeight();
dim.des = defaultRowHeight(); dim.des = defaultRowHeight();
@ -52,7 +52,7 @@ void InsetPagebreak::metrics(MetricsInfo & mi, Dimension & dim) const
} }
void InsetPagebreak::draw(PainterInfo & pi, int x, int y) const void InsetNewpage::draw(PainterInfo & pi, int x, int y) const
{ {
FontInfo font; FontInfo font;
font.setColor(Color_pagebreak); font.setColor(Color_pagebreak);
@ -78,7 +78,7 @@ void InsetPagebreak::draw(PainterInfo & pi, int x, int y) const
} }
int InsetPagebreak::latex(Buffer const &, odocstream & os, int InsetNewpage::latex(Buffer const &, odocstream & os,
OutputParams const &) const OutputParams const &) const
{ {
os << from_ascii(getCmdName()) << "{}"; os << from_ascii(getCmdName()) << "{}";
@ -86,7 +86,7 @@ int InsetPagebreak::latex(Buffer const &, odocstream & os,
} }
int InsetPagebreak::plaintext(Buffer const &, odocstream & os, int InsetNewpage::plaintext(Buffer const &, odocstream & os,
OutputParams const &) const OutputParams const &) const
{ {
os << '\n'; os << '\n';
@ -94,7 +94,7 @@ int InsetPagebreak::plaintext(Buffer const &, odocstream & os,
} }
int InsetPagebreak::docbook(Buffer const &, odocstream & os, int InsetNewpage::docbook(Buffer const &, odocstream & os,
OutputParams const &) const OutputParams const &) const
{ {
os << '\n'; os << '\n';

View File

@ -1,6 +1,6 @@
// -*- C++ -*- // -*- C++ -*-
/** /**
* \file InsetPagebreak.h * \file InsetNewpage.h
* This file is part of LyX, the document processor. * This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING. * Licence details can be found in the file COPYING.
* *
@ -9,8 +9,8 @@
* Full author contact details are available in file CREDITS. * Full author contact details are available in file CREDITS.
*/ */
#ifndef INSET_PAGEBREAK_H #ifndef INSET_NEWPAGE_H
#define INSET_PAGEBREAK_H #define INSET_NEWPAGE_H
#include "Inset.h" #include "Inset.h"
@ -19,11 +19,11 @@
namespace lyx { namespace lyx {
class InsetPagebreak : public Inset { class InsetNewpage : public Inset {
public: public:
InsetPagebreak() {} InsetNewpage() {}
InsetCode lyxCode() const { return PAGEBREAK_CODE; } InsetCode lyxCode() const { return NEWPAGE_CODE; }
void metrics(MetricsInfo &, Dimension &) const; void metrics(MetricsInfo &, Dimension &) const;
@ -46,10 +46,26 @@ public:
DisplayType display() const { return AlignCenter; } DisplayType display() const { return AlignCenter; }
virtual docstring insetLabel() const { return _("Page Break"); } virtual docstring insetLabel() const { return _("New Page"); }
virtual std::string getCmdName() const { return "\\newpage"; } virtual std::string getCmdName() const { return "\\newpage"; }
private:
virtual Inset * clone() const
{
return new InsetNewpage;
}
};
class InsetPagebreak : public InsetNewpage {
public:
InsetPagebreak() {}
docstring insetLabel() const { return _("Page Break"); }
std::string getCmdName() const { return "\\pagebreak"; }
private: private:
virtual Inset * clone() const virtual Inset * clone() const
{ {
@ -58,7 +74,7 @@ private:
}; };
class InsetClearPage : public InsetPagebreak { class InsetClearPage : public InsetNewpage {
public: public:
InsetClearPage() {} InsetClearPage() {}
@ -74,7 +90,7 @@ private:
}; };
class InsetClearDoublePage : public InsetPagebreak { class InsetClearDoublePage : public InsetNewpage {
public: public:
InsetClearDoublePage() {} InsetClearDoublePage() {}
@ -91,4 +107,4 @@ private:
} // namespace lyx } // namespace lyx
#endif // INSET_PAGEBREAK_H #endif // INSET_NEWPAGE_H

View File

@ -539,7 +539,7 @@ public:
bool endfoot; bool endfoot;
/// row of endlastfoot /// row of endlastfoot
bool endlastfoot; bool endlastfoot;
/// row for a pagebreak /// row for a newpage
bool newpage; bool newpage;
}; };
/// ///

View File

@ -339,6 +339,7 @@ enum kb_action {
LFUN_BOX_INSERT, LFUN_BOX_INSERT,
LFUN_LINE_INSERT, LFUN_LINE_INSERT,
// 240 // 240
LFUN_NEWPAGE_INSERT, // uwestoehr 20071124
LFUN_PAGEBREAK_INSERT, LFUN_PAGEBREAK_INSERT,
LFUN_REPEAT, LFUN_REPEAT,
LFUN_FINISHED_LEFT, LFUN_FINISHED_LEFT,

View File

@ -86,7 +86,7 @@ InsetMathGrid::CellInfo::CellInfo()
InsetMathGrid::RowInfo::RowInfo() InsetMathGrid::RowInfo::RowInfo()
: lines_(0), skip_(0), allow_pagebreak_(true) : lines_(0), skip_(0), allow_newpage_(true)
{} {}
@ -649,7 +649,7 @@ docstring InsetMathGrid::eolString(row_type row, bool emptyline, bool fragile) c
if (!rowinfo_[row].crskip_.zero()) if (!rowinfo_[row].crskip_.zero())
eol += '[' + from_utf8(rowinfo_[row].crskip_.asLatexString()) + ']'; eol += '[' + from_utf8(rowinfo_[row].crskip_.asLatexString()) + ']';
else if(!rowinfo_[row].allow_pagebreak_) else if(!rowinfo_[row].allow_newpage_)
eol += '*'; eol += '*';
// make sure an upcoming '[' does not break anything // make sure an upcoming '[' does not break anything

View File

@ -63,7 +63,7 @@ public:
/// extra distance between lines /// extra distance between lines
int skip_; int skip_;
/// Is a page break allowed after this row? /// Is a page break allowed after this row?
bool allow_pagebreak_; bool allow_newpage_;
}; };
// additional per-row information // additional per-row information

View File

@ -112,7 +112,7 @@ bool stared(docstring const & s)
* environments like "equation" that have a fixed number of rows. * environments like "equation" that have a fixed number of rows.
*/ */
bool addRow(InsetMathGrid & grid, InsetMathGrid::row_type & cellrow, bool addRow(InsetMathGrid & grid, InsetMathGrid::row_type & cellrow,
docstring const & vskip, bool allow_pagebreak = true) docstring const & vskip, bool allow_newpage_ = true)
{ {
++cellrow; ++cellrow;
if (cellrow == grid.nrows()) { if (cellrow == grid.nrows()) {
@ -129,14 +129,14 @@ bool addRow(InsetMathGrid & grid, InsetMathGrid::row_type & cellrow,
lyxerr << "ignoring extra row"; lyxerr << "ignoring extra row";
if (!vskip.empty()) if (!vskip.empty())
lyxerr << " with extra space " << to_utf8(vskip); lyxerr << " with extra space " << to_utf8(vskip);
if (!allow_pagebreak) if (!allow_newpage_)
lyxerr << " with no page break allowed"; lyxerr << " with no page break allowed";
lyxerr << '.' << endl; lyxerr << '.' << endl;
return false; return false;
} }
} }
grid.vcrskip(Length(to_utf8(vskip)), cellrow - 1); grid.vcrskip(Length(to_utf8(vskip)), cellrow - 1);
grid.rowinfo(cellrow - 1).allow_pagebreak_ = allow_pagebreak; grid.rowinfo(cellrow - 1).allow_newpage_ = allow_newpage_;
return true; return true;
} }

View File

@ -87,7 +87,7 @@ public:
/// These are for longtabulars only /// These are for longtabulars only
/// row type (head, foot, firsthead etc.) /// row type (head, foot, firsthead etc.)
LTRowType type; LTRowType type;
/// row for a pagebreak /// row for a newpage
bool newpage; bool newpage;
}; };

View File

@ -2290,10 +2290,10 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
} }
else if (t.cs() == "newpage" || else if (t.cs() == "newpage" ||
t.cs() == "pagebreak" ||
t.cs() == "clearpage" || t.cs() == "clearpage" ||
t.cs() == "cleardoublepage") { t.cs() == "cleardoublepage") {
context.check_layout(os); context.check_layout(os);
// FIXME: what about \\pagebreak?
os << "\n\\" << t.cs() << "\n"; os << "\n\\" << t.cs() << "\n";
skip_braces(p); // eat {} skip_braces(p); // eat {}
} }