void InsetTOC::makeTOCWithDepth(XHTMLStream & xs, Toc const & toc, OutputParams const & op) const { Toc::const_iterator it = toc.begin(); Toc::const_iterator const en = toc.end(); int lastdepth = 0; for (; it != en; ++it) { // do not output entries that are not actually included in the output, // e.g., stuff in non-active branches or notes or whatever. if (!it->isOutput()) continue; // 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(); // 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(); } 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(); // now open our tag stringstream attr; attr << "class='lyxtoc-" << depth << "'"; xs << html::StartTag("div", attr.str()) << html::CR(); lastdepth = depth; } else { // no change of level, so close and open xs << html::EndTag("div") << html::CR(); stringstream attr; attr << "class='lyxtoc-" << depth << "'"; xs << html::StartTag("div", attr.str()) << html::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(); }
void InsetTOC::makeTOCNoDepth(XHTMLStream & xs, Toc const & toc, const OutputParams & op) const { Toc::const_iterator it = toc.begin(); Toc::const_iterator const en = toc.end(); for (; it != en; ++it) { // do not output entries that are not actually included in the output, // e.g., stuff in non-active branches or notes or whatever. if (!it->isOutput()) continue; xs << html::StartTag("div", "class='lyxtoc-flat'") << html::CR(); Paragraph const & par = it->dit().innerParagraph(); makeTOCEntry(xs, par, op); xs << html::EndTag("div"); } }