return "listing";
return cmd;
}
-}
+} // namespace
InsetTOC::InsetTOC(Buffer * buf, InsetCommandParams const & p)
cur.dispatched();
}
break;
-
+
default:
InsetCommand::doDispatch(cur, cmd);
}
docstring InsetTOC::layoutName() const
{
- if (getCmdName() == "lstlistoflistings")
- return from_ascii("TOC:Listings");
+ if (getCmdName() == "lstlistoflistings") {
+ if (buffer().params().use_minted)
+ return from_ascii("TOC:MintedListings");
+ else
+ return from_ascii("TOC:Listings");
+ }
return from_ascii("TOC");
}
{
InsetCommand::validate(features);
features.useInsetLayout(getLayout());
- if (getCmdName() == "lstlistoflistings")
- features.require("listings");
+ if (getCmdName() == "lstlistoflistings") {
+ if (buffer().params().use_minted)
+ features.require("minted");
+ else
+ features.require("listings");
+ }
}
}
-void InsetTOC::makeTOCEntry(XHTMLStream & xs,
+void InsetTOC::makeTOCEntry(XMLStream & xs,
Paragraph const & par, OutputParams const & op) const
{
string const attr = "href='#" + par.magicLabel() + "' class='tocentry'";
- xs << html::StartTag("a", attr);
+ xs << xml::StartTag("a", attr);
// First the label, if there is one
docstring const & label = par.params().labelString();
Font const dummy;
par.simpleLyXHTMLOnePar(buffer(), xs, ours, dummy);
- xs << html::EndTag("a") << " ";
-
- // Now a link to the paragraph
- string const parattr = "href='#" + par.magicLabel() + "' class='tocarrow'";
- xs << html::StartTag("a", parattr);
- // FIXME XHTML
- // There ought to be a simple way to customize this.
- // Maybe if we had an InsetLayout for TOC...
- xs << XHTMLStream::ESCAPE_NONE << ">";
- xs << html::EndTag("a");
+ xs << xml::EndTag("a") << xml::CR();
}
-void InsetTOC::makeTOCWithDepth(XHTMLStream xs,
- Toc toc, OutputParams const & op) const
+void InsetTOC::makeTOCWithDepth(XMLStream & xs,
+ Toc const & toc, OutputParams const & op) const
{
Toc::const_iterator it = toc.begin();
Toc::const_iterator const en = toc.end();
// First, we need to manage increases and decreases of depth
// If there's no depth to deal with, we artifically set it to 1.
int const depth = it->depth();
-
+
// Ignore stuff above the tocdepth
if (depth > buffer().params().tocdepth)
continue;
-
+
if (depth > lastdepth) {
- xs << html::CR();
+ xs << xml::CR();
// open as many tags as we need to open to get to this level
// this includes the tag for the current level
for (int i = lastdepth + 1; i <= depth; ++i) {
stringstream attr;
attr << "class='lyxtoc-" << i << "'";
- xs << html::StartTag("div", attr.str()) << html::CR();
+ xs << xml::StartTag("div", attr.str()) << xml::CR();
}
lastdepth = depth;
}
else if (depth < lastdepth) {
// close as many as we have to close to get back to this level
// this includes closing the last tag at this level
- for (int i = lastdepth; i >= depth; --i)
- xs << html::EndTag("div") << html::CR();
+ for (int i = lastdepth; i >= depth; --i)
+ xs << xml::EndTag("div") << xml::CR();
// now open our tag
stringstream attr;
attr << "class='lyxtoc-" << depth << "'";
- xs << html::StartTag("div", attr.str()) << html::CR();
+ xs << xml::StartTag("div", attr.str()) << xml::CR();
lastdepth = depth;
} else {
// no change of level, so close and open
- xs << html::EndTag("div") << html::CR();
+ xs << xml::EndTag("div") << xml::CR();
stringstream attr;
attr << "class='lyxtoc-" << depth << "'";
- xs << html::StartTag("div", attr.str()) << html::CR();
+ xs << xml::StartTag("div", attr.str()) << xml::CR();
}
-
+
// Now output TOC info for this entry
Paragraph const & par = it->dit().innerParagraph();
makeTOCEntry(xs, par, op);
}
- for (int i = lastdepth; i > 0; --i)
- xs << html::EndTag("div") << html::CR();
+ for (int i = lastdepth; i > 0; --i)
+ xs << xml::EndTag("div") << xml::CR();
}
-void InsetTOC::makeTOCNoDepth(XHTMLStream xs,
- Toc toc, const OutputParams & op) const
+void InsetTOC::makeTOCNoDepth(XMLStream & xs,
+ Toc const & toc, const OutputParams & op) const
{
Toc::const_iterator it = toc.begin();
Toc::const_iterator const en = toc.end();
if (!it->isOutput())
continue;
- xs << html::StartTag("div", "class='lyxtoc-flat'") << html::CR();
+ xs << xml::StartTag("div", "class='lyxtoc-flat'") << xml::CR();
Paragraph const & par = it->dit().innerParagraph();
makeTOCEntry(xs, par, op);
-
- xs << html::EndTag("div");
+
+ xs << xml::EndTag("div");
}
}
-docstring InsetTOC::xhtml(XHTMLStream &, OutputParams const & op) const
+docstring InsetTOC::xhtml(XMLStream &, OutputParams const & op) const
{
string const & command = getCmdName();
if (command != "tableofcontents" && command != "lstlistoflistings") {
LYXERR0("TOC type " << command << " not yet implemented.");
- LASSERT(false, /* */);
- return docstring();
+ LASSERT(false, return docstring());
}
- Toc const & toc = buffer().tocBackend().toc(cmd2type(command));
- if (toc.empty())
+ shared_ptr<Toc const> toc =
+ buffer().masterBuffer()->tocBackend().toc(cmd2type(command));
+ if (toc->empty())
return docstring();
// we'll use our own stream, because we are going to defer everything.
// that's how we deal with the fact that we're probably inside a standard
// paragraph, and we don't want to be.
odocstringstream ods;
- XHTMLStream xs(ods);
+ XMLStream xs(ods);
- xs << html::StartTag("div", "class='toc'");
+ xs << xml::StartTag("div", "class='toc'");
// Title of TOC
+ InsetLayout const & il = getLayout();
+ string const & tag = il.htmltag();
docstring title = screenLabel();
Layout const & lay = buffer().params().documentClass().htmlTOCLayout();
string const & tocclass = lay.defaultCSSClass();
string const tocattr = "class='tochead " + tocclass + "'";
- xs << html::StartTag("div", tocattr)
+ xs << xml::StartTag(tag, tocattr)
<< title
- << html::EndTag("div");
+ << xml::EndTag(tag);
// with lists of listings, at least, there is no depth
// to worry about. so the code can be simpler.
// Output of TOC
if (use_depth)
- makeTOCWithDepth(xs, toc, op);
+ makeTOCWithDepth(xs, *toc, op);
else
- makeTOCNoDepth(xs, toc, op);
+ makeTOCNoDepth(xs, *toc, op);
- xs << html::EndTag("div") << html::CR();
+ xs << xml::EndTag("div") << xml::CR();
return ods.str();
}