\papercolumns 1
\papersides 2
\paperpagestyle headings
-\tracking_changes false
+\tracking_changes true
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict true
+\author -712698321 "Jürgen Spitzmüller"
\end_header
\begin_body
not
\emph default
whether this command should itself be protected.)
+\change_inserted -712698321 1514479340
+
+\end_layout
+
+\begin_layout Description
+
+\change_inserted -712698321 1514479340
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1514479340
+Nests
+\end_layout
+
+\end_inset
+
+ Includes a comma-separated list of layout names that should be nested in
+ and after the current one.
+ Only makes sense for nestable layouts (such as environments)
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1514479340
+EndNests
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+\change_unchanged
+
\end_layout
\begin_layout Description
# Richard Heck <rgheck@lyx.org>, Martin Vermeer <martin.vermeer@hut.fi> and probably others.
-Format 65
+Format 66
#
# GLOBAL SETTINGS
EndFont
AutoInsert 1
EndArgument
+ Nests
+ Standard,Itemize,Enumerate,Description,FrameTitle,FrameSubtitle,Column,
+ Columns,ColumnsCenterAligned,ColumnsTopAligned,Pause,Overprint,OverlayArea,Only,Block,
+ ExampleBlock,AlertBlock,Bibliography,Quotation,Quote,Verse,Corollary,Definition,Definitions,
+ Example,Examples,Fact,Lemma,Proof,Theorem,LyX-Code
+ EndNests
End
Style PlainFrame
Family Roman
Color latex
EndFont
+ Nests
+ Standard,Itemize,Enumerate,Description,Pause,Overprint,OverlayArea,Only,Block,
+ ExampleBlock,AlertBlock,Bibliography,Quotation,Quote,Verse,Corollary,Definition,Definitions,
+ Example,Examples,Fact,Lemma,Proof,Theorem,LyX-Code
+ EndNests
End
Style ColumnsCenterAligned
EndFont
AutoInsert 1
EndArgument
+ Nests
+ Standard,Itemize,Enumerate,Description,Pause,Overprint,OverlayArea,Only,Quotation,
+ Quote,Verse,Corollary,Definition,Definitions,Example,Examples,Fact,Lemma,Proof,Theorem,LyX-Code
+ EndNests
End
Style ExampleBlock
LabelString "Additional Theorem Text"
Tooltip "Additional text appended to the theorem header"
EndArgument
+ Nests
+ Standard,Itemize,Enumerate,Description,Pause,Overprint,OverlayArea,Only,LyX-Code
+ EndNests
End
Style Definition
# This script will update a .layout file to current format
# The latest layout format is also defined in src/TextClass.cpp
-currentFormat = 65
+currentFormat = 66
# Incremented to format 4, 6 April 2007, lasgouttes
# Incremented to format 65, 16 October 2017 by spitz
# Color collapsable -> collapsible
+# Incremented to format 66, 28 December 2017 by spitz
+# New Layout tag "Nests ... EndNests"
+
# Do not forget to document format change in Customization
# Manual (section "Declaring a new text class").
i += 1
continue
+ if format == 65:
+ # nothing to do.
+ i += 1
+ continue
+
if format == 64:
match = re.compile(b'(\\s*Color\\s+)(\\w+)', re.IGNORECASE).match(lines[i])
if not match:
LT_NEED_PROTECT,
LT_NEWLINE,
LT_NEXTNOINDENT,
+ LT_NESTS,
LT_PAR_GROUP,
LT_PARINDENT,
LT_PARSEP,
{ "leftmargin", LT_LEFTMARGIN },
{ "margin", LT_MARGIN },
{ "needprotect", LT_NEED_PROTECT },
+ { "nests", LT_NESTS },
{ "newline", LT_NEWLINE },
{ "nextnoindent", LT_NEXTNOINDENT },
{ "obsoletedby", LT_OBSOLETEDBY },
break;
}
+ case LT_NESTS: {
+ docstring const nest = subst(subst(subst(lex.getLongString(from_ascii("EndNests")),
+ from_ascii("\n"), docstring()),
+ from_ascii(" "), docstring()),
+ from_ascii("\t"), docstring());
+ vector<docstring> const nests =
+ getVectorFromString(nest);
+ nests_.insert(nests.begin(), nests.end());
+ break;
+ }
+
case LT_REFPREFIX: {
docstring arg;
lex >> arg;
}
os << '\n';
}
+ if (!nests_.empty()) {
+ os << "\tNests ";
+ for (set<docstring>::const_iterator it = nests_.begin();
+ it != nests_.end(); ++it) {
+ if (it != nests_.begin())
+ os << ',';
+ os << to_utf8(*it);
+ }
+ os << '\n';
+ }
if (refprefix.empty())
os << "\tRefPrefix OFF\n";
else
///
std::set<std::string> const & requires() const { return requires_; }
///
+ std::set<docstring> const & nests() const { return nests_; }
+ ///
std::string const & latexparam() const { return latexparam_; }
///
docstring leftdelim() const { return leftdelim_; }
bool par_group_;
/// Packages needed for this layout
std::set<std::string> requires_;
+ /// Layouts that are by default nested after this one
+ std::set<docstring> nests_;
///
LaTeXArgMap latexargs_;
///
/*!
* \var lyx::FuncCode lyx::LFUN_LAYOUT
* \li Action: Sets the layout (that is, environment) for the current paragraph.
- * \li Syntax: layout <LAYOUT>
+ * \li Syntax: layout <LAYOUT> [ignorenests]
* \li Params: <LAYOUT>: the layout to use
+ ignorenests: If specified, nesting advices will be ignored.
* \endvar
*/
{ LFUN_LAYOUT, "layout", Noop, Layout },
break;
case LFUN_LAYOUT: {
- docstring layout = cmd.argument();
+ bool const ignorenests = cmd.getArg(1) == "ignorenests";
+ docstring layout = ignorenests ? from_utf8(cmd.getArg(0)) : cmd.argument();
LYXERR(Debug::INFO, "LFUN_LAYOUT: (arg) " << to_utf8(layout));
Paragraph const & para = cur.paragraph();
docstring const old_layout = para.layout().name();
+ set<docstring> nests = para.layout().nests();
DocumentClass const & tclass = bv->buffer().params().documentClass();
if (layout.empty())
}
}
- if (change_layout)
+ if (change_layout) {
setLayout(cur, layout);
+ bool do_nest = false;
+ if (cur.pit() > 0 && pars_[cur.pit() - 1].layout().name() == old_layout)
+ do_nest = !ignorenests;
+ if (do_nest && nests.find(layout) != nests.end())
+ lyx::dispatch(FuncRequest(LFUN_DEPTH_INCREMENT));
+ }
Layout::LaTeXArgMap args = tclass[layout].args();
Layout::LaTeXArgMap::const_iterator lait = args.begin();
lyx::dispatch(FuncRequest(LFUN_DEPTH_DECREMENT));
}
DocumentClass const & tc = bv->buffer().params().documentClass();
- lyx::dispatch(FuncRequest(LFUN_LAYOUT, tc.plainLayout().name()));
+ lyx::dispatch(FuncRequest(LFUN_LAYOUT, from_ascii("\"") + tc.plainLayout().name()
+ + from_ascii("\" ignorenests")));
lyx::dispatch(FuncRequest(LFUN_SEPARATOR_INSERT, "plain"));
if (before) {
cur.backwardPos();
case LFUN_LAYOUT: {
DocumentClass const & tclass = cur.buffer()->params().documentClass();
- docstring layout = cmd.argument();
+ bool const ignorenests = cmd.getArg(1) == "ignorenests";
+ docstring layout = ignorenests ? from_utf8(cmd.getArg(0)) : cmd.argument();
if (layout.empty())
layout = tclass.defaultLayoutName();
enable = !owner_->forcePlainLayout() && tclass.hasLayout(layout);
// You should also run the development/tools/updatelayouts.py script,
// to update the format of all of our layout files.
//
-int const LAYOUT_FORMAT = 65; //spitz: Color collapsable -> collapsible.
+int const LAYOUT_FORMAT = 66; //spitz: New layout tag Nests
// Layout format for the current lyx file format. Controls which format is