X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetIndex.cpp;h=a328d27de635c885b6d978e1fccf0ec81a763e16;hb=239b9919ffe28338d789e6dc9122228f77ab77a7;hp=a2539b00d77b6e629a7ce8ea8462e9016469349f;hpb=11ca1406671f3e7b126bbe9b51694e8d32ba161c;p=lyx.git diff --git a/src/insets/InsetIndex.cpp b/src/insets/InsetIndex.cpp index a2539b00d7..a328d27de6 100644 --- a/src/insets/InsetIndex.cpp +++ b/src/insets/InsetIndex.cpp @@ -28,6 +28,7 @@ #include "output_latex.h" #include "output_xhtml.h" #include "sgml.h" +#include "texstream.h" #include "TextClass.h" #include "TocBackend.h" @@ -74,9 +75,10 @@ void InsetIndex::latex(otexstream & os, OutputParams const & runparams_in) const } // get contents of InsetText as LaTeX and plaintext - TexRow texrow; odocstringstream ourlatex; - otexstream ots(ourlatex, texrow); + // FIXME: do Tex/Row correspondence (I don't currently understand what is + // being generated from latexstr below) + otexstream ots(ourlatex); InsetText::latex(ots, runparams); odocstringstream ourplain; InsetText::plaintext(ourplain, runparams); @@ -348,15 +350,22 @@ void InsetIndex::string2params(string const & in, InsetIndexParams & params) } -void InsetIndex::addToToc(DocIterator const & cpit, bool output_active) const +void InsetIndex::addToToc(DocIterator const & cpit, bool output_active, + UpdateType utype) const { DocIterator pit = cpit; pit.push_back(CursorSlice(const_cast(*this))); docstring str; - text().forOutliner(str, 0); - buffer().tocBackend().toc("index").push_back(TocItem(pit, 0, str, output_active)); + string type = "index"; + if (buffer().masterBuffer()->params().use_indices) + type += ":" + to_utf8(params_.index); + // this is unlikely to be terribly long + text().forOutliner(str, INT_MAX); + TocBuilder & b = buffer().tocBackend().builder(type); + b.pushItem(pit, str, output_active); // Proceed with the rest of the inset. - InsetCollapsable::addToToc(cpit, output_active); + InsetCollapsable::addToToc(cpit, output_active, utype); + b.pop(); } @@ -427,7 +436,7 @@ ParamInfo const & InsetPrintIndex::findInfo(string const & /* cmdName */) static ParamInfo param_info_; if (param_info_.empty()) { param_info_.add("type", ParamInfo::LATEX_OPTIONAL, - ParamInfo::HANDLING_ESCAPE); + ParamInfo::HANDLING_ESCAPE); param_info_.add("name", ParamInfo::LATEX_REQUIRED); } return param_info_; @@ -555,7 +564,7 @@ void InsetPrintIndex::latex(otexstream & os, OutputParams const & runparams_in) { if (!buffer().masterBuffer()->params().use_indices) { if (getParam("type") == from_ascii("idx")) - os << "\\printindex{}"; + os << "\\printindex" << termcmd; return; } OutputParams runparams = runparams_in; @@ -685,13 +694,13 @@ docstring InsetPrintIndex::xhtml(XHTMLStream &, OutputParams const & op) const if (bp.use_indices && getParam("type") != from_ascii("idx")) return docstring(); - Toc const & toc = buffer().tocBackend().toc("index"); - if (toc.empty()) + shared_ptr toc = buffer().tocBackend().toc("index"); + if (toc->empty()) return docstring(); // Collect the index entries in a form we can use them. - Toc::const_iterator it = toc.begin(); - Toc::const_iterator const en = toc.end(); + Toc::const_iterator it = toc->begin(); + Toc::const_iterator const en = toc->end(); vector entries; for (; it != en; ++it) if (it->isOutput())