#include "buffer.h"
#include "bufferparams.h"
+#include "outputparams.h"
#include "paragraph.h"
#include "paragraph_funcs.h"
-#include "ParagraphList_fwd.h"
+#include "ParagraphList.h"
#include "ParagraphParameters.h"
#include "sgml.h"
ParagraphList::const_iterator pit = paragraphs.begin();
ParagraphList::const_iterator pend = paragraphs.end();
+
+ BOOST_ASSERT(runparams.par_begin <= runparams.par_end);
+ // if only part of the paragraphs will be outputed
+ if (runparams.par_begin != runparams.par_end) {
+ pit = boost::next(paragraphs.begin(), runparams.par_begin);
+ pend = boost::next(paragraphs.begin(), runparams.par_end);
+ // runparams will be passed to nested paragraphs, so
+ // we have to reset the range parameters.
+ const_cast<OutputParams&>(runparams).par_begin = 0;
+ const_cast<OutputParams&>(runparams).par_end = 0;
+ }
+
for (; pit != pend; ++pit) {
LyXLayout_ptr const & style = pit->layout();
// treat <toc> as a special case for compatibility with old code
if (!pit->empty() && pit->isInset(0)) {
InsetBase const * inset = pit->getInset(0);
- if (inset->lyxCode() == InsetOld::TOC_CODE) {
+ if (inset->lyxCode() == InsetBase::TOC_CODE) {
string const temp = "toc";
- sgml::openTag(os, depth, false, temp);
+ sgml::openTag(os, temp);
continue;
}
}
// environment tag closing
for (; depth > pit->params().depth(); --depth) {
- sgml::closeTag(os, depth, false, environment_stack[depth]);
+ sgml::closeTag(os, environment_stack[depth]);
environment_stack[depth].erase();
}
case LATEX_PARAGRAPH:
if (depth == pit->params().depth()
&& !environment_stack[depth].empty()) {
- sgml::closeTag(os, depth, false, environment_stack[depth]);
+ sgml::closeTag(os, environment_stack[depth]);
environment_stack[depth].erase();
if (depth)
--depth;
else
os << "</p>";
}
- sgml::openTag(os, depth, false, style->latexname());
+ sgml::openTag(os, style->latexname());
break;
case LATEX_COMMAND:
+#if 0
if (depth != 0)
- //error(ErrorItem(_("Error:"), _("Wrong depth for LatexType Command.\n"), pit->id(), 0, pit->size()));
- ;
+ error(ErrorItem(_("Error:"), _("Wrong depth for LatexType Command.\n"), pit->id(), 0, pit->size()));
+#endif
if (!environment_stack[depth].empty()) {
- sgml::closeTag(os, depth, false, environment_stack[depth]);
+ sgml::closeTag(os, environment_stack[depth]);
os << "</p>";
}
environment_stack[depth].erase();
- sgml::openTag(os, depth, false, style->latexname());
+ sgml::openTag(os, style->latexname());
break;
case LATEX_ENVIRONMENT:
if (depth == pit->params().depth()
&& environment_stack[depth] != latexname) {
- sgml::closeTag(os, depth, false,
- environment_stack[depth]);
+ sgml::closeTag(os, environment_stack[depth]);
environment_stack[depth].erase();
}
if (depth < pit->params().depth()) {
}
if (environment_stack[depth] != latexname) {
if (depth == 0) {
- sgml::openTag(os, depth, false, "p");
+ sgml::openTag(os, "p");
}
- sgml::openTag(os, depth, false, latexname);
+ sgml::openTag(os, latexname);
if (environment_stack.size() == depth + 1)
environment_stack.push_back("!-- --");
else
item_name = "item";
- sgml::openTag(os, depth + 1, false, item_name);
+ sgml::openTag(os, item_name);
}
break;
default:
- sgml::openTag(os, depth, false, style->latexname());
+ sgml::openTag(os, style->latexname());
break;
}
pit->simpleLinuxDocOnePar(buf, os,
- outerFont(pit - paragraphs.begin(), paragraphs),
+ outerFont(std::distance(paragraphs.begin(), pit), paragraphs),
runparams, depth);
os << "\n";
os << "]]>";
break;
default:
- sgml::closeTag(os, depth, false, style->latexname());
+ sgml::closeTag(os, style->latexname());
break;
}
}
// Close open tags
for (int i = depth; i >= 0; --i)
- sgml::closeTag(os, depth, false, environment_stack[i]);
+ sgml::closeTag(os, environment_stack[i]);
}