]> git.lyx.org Git - lyx.git/blobdiff - src/output_linuxdoc.C
* remove various xforms relicts, in particular:
[lyx.git] / src / output_linuxdoc.C
index c51f2f2c63461f2488f1ffaaf568d636cad7524a..459c23b324de132f7452ee731d7f5e6f77d655a7 100644 (file)
 
 #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"
 
 #include <stack>
 
-#ifdef HAVE_LOCALE
-#endif
-
 using std::ostream;
 using std::stack;
 using std::vector;
@@ -41,23 +39,35 @@ void linuxdocParagraphs(Buffer const & buf,
        string item_name;
        vector<string> environment_stack(5);
 
-       ParagraphList::iterator pit = const_cast<ParagraphList&>(paragraphs).begin();
-       ParagraphList::iterator pend = const_cast<ParagraphList&>(paragraphs).end();
+       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->isInset(0)) {
-                       InsetBase * inset = pit->getInset(0);
-                       if (inset->lyxCode() == InsetOld::TOC_CODE) {
+               if (!pit->empty() && pit->isInset(0)) {
+                       InsetBase const * inset = pit->getInset(0);
+                       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();
                }
 
@@ -66,28 +76,29 @@ void linuxdocParagraphs(Buffer const & buf,
                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:
@@ -97,8 +108,7 @@ void linuxdocParagraphs(Buffer const & buf,
 
                        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()) {
@@ -107,9 +117,9 @@ void linuxdocParagraphs(Buffer const & buf,
                        }
                        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("!-- --");
@@ -126,17 +136,17 @@ void linuxdocParagraphs(Buffer const & buf,
                        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 - const_cast<ParagraphList&>(paragraphs).begin(), paragraphs),
+                                         outerFont(std::distance(paragraphs.begin(), pit), paragraphs),
                                          runparams, depth);
 
                os << "\n";
@@ -151,12 +161,12 @@ void linuxdocParagraphs(Buffer const & buf,
                                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]);
 }