#include "buffer_funcs.h"
#include "BufferParams.h"
#include "Counters.h"
+#include "Font.h"
#include "Layout.h"
#include "OutputParams.h"
#include "Paragraph.h"
-#include "paragraph_funcs.h"
#include "ParagraphList.h"
#include "ParagraphParameters.h"
#include "sgml.h"
+#include "Text.h"
#include "TextClass.h"
#include "support/lassert.h"
#include "support/debug.h"
#include "support/lstrings.h"
-
-#include <boost/next_prior.hpp>
+#include "support/lyxalgo.h"
using namespace std;
using namespace lyx::support;
ParagraphList::const_iterator searchParagraph(
ParagraphList::const_iterator p,
- ParagraphList::const_iterator const & pend)
+ ParagraphList::const_iterator const & pend)
{
for (++p; p != pend && p->layout().latextype == LATEX_PARAGRAPH; ++p)
;
ParagraphList::const_iterator searchCommand(
- ParagraphList::const_iterator p,
- ParagraphList::const_iterator const & pend)
+ ParagraphList::const_iterator p,
+ ParagraphList::const_iterator const & pend)
{
Layout const & bstyle = p->layout();
ParagraphList::const_iterator searchEnvironment(
- ParagraphList::const_iterator p,
- ParagraphList::const_iterator const & pend)
+ ParagraphList::const_iterator p,
+ ParagraphList::const_iterator const & pend)
{
Layout const & bstyle = p->layout();
size_t const depth = p->params().depth();
}
-ParagraphList::const_iterator makeParagraph(Buffer const & buf,
- odocstream & os,
- OutputParams const & runparams,
- ParagraphList const & paragraphs,
- ParagraphList::const_iterator const & pbegin,
- ParagraphList::const_iterator const & pend)
+ParagraphList::const_iterator makeParagraph(
+ Buffer const & buf,
+ odocstream & os,
+ OutputParams const & runparams,
+ Text const & text,
+ ParagraphList::const_iterator const & pbegin,
+ ParagraphList::const_iterator const & pend)
{
+ ParagraphList const & paragraphs = text.paragraphs();
for (ParagraphList::const_iterator par = pbegin; par != pend; ++par) {
if (par != pbegin)
os << '\n';
- if (buf.params().documentClass().isDefaultLayout(par->layout())
- && par->emptyTag()) {
+ bool const default_or_plain =
+ (buf.params().documentClass().isDefaultLayout(par->layout())
+ || buf.params().documentClass().isPlainLayout(par->layout()));
+ if (default_or_plain && par->emptyTag()) {
par->simpleDocBookOnePar(buf, os, runparams,
- outerFont(distance(paragraphs.begin(), par), paragraphs));
+ text.outerFont(distance(paragraphs.begin(), par)));
} else {
sgml::openTag(buf, os, runparams, *par);
par->simpleDocBookOnePar(buf, os, runparams,
- outerFont(distance(paragraphs.begin(), par), paragraphs));
+ text.outerFont(distance(paragraphs.begin(), par)));
sgml::closeTag(os, *par);
}
}
}
-ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
- odocstream & os,
- OutputParams const & runparams,
- ParagraphList const & paragraphs,
- ParagraphList::const_iterator const & pbegin,
- ParagraphList::const_iterator const & pend) {
+ParagraphList::const_iterator makeEnvironment(
+ Buffer const & buf,
+ odocstream & os,
+ OutputParams const & runparams,
+ Text const & text,
+ ParagraphList::const_iterator const & pbegin,
+ ParagraphList::const_iterator const & pend)
+{
+ ParagraphList const & paragraphs = text.paragraphs();
ParagraphList::const_iterator par = pbegin;
Layout const & defaultstyle = buf.params().documentClass().defaultLayout();
Layout const & bstyle = par->layout();
- string item_tag;
// Opening outter tag
sgml::openTag(buf, os, runparams, *pbegin);
if (!bstyle.labeltag().empty()) {
sgml::openTag(os, bstyle.innertag(), id);
sgml::openTag(os, bstyle.labeltag());
- sep = par->firstWord(os, runparams) + 1;
+ sep = par->firstWordDocBook(os, runparams) + 1;
sgml::closeTag(os, bstyle.labeltag());
}
wrapper = defaultstyle.latexname();
case LATEX_ITEM_ENVIRONMENT: {
if (par->params().depth() == pbegin->params().depth()) {
sgml::openTag(os, wrapper);
- par->simpleDocBookOnePar(buf, os, runparams, outerFont(distance(paragraphs.begin(), par), paragraphs), sep);
+ par->simpleDocBookOnePar(buf, os, runparams,
+ text.outerFont(distance(paragraphs.begin(), par)), sep);
sgml::closeTag(os, wrapper);
++par;
}
else {
send = searchEnvironment(par, pend);
- par = makeEnvironment(buf, os, runparams, paragraphs, par,send);
+ par = makeEnvironment(buf, os, runparams, text, par,send);
}
break;
}
case LATEX_PARAGRAPH:
send = searchParagraph(par, pend);
- par = makeParagraph(buf, os, runparams, paragraphs, par,send);
+ par = makeParagraph(buf, os, runparams, text, par,send);
break;
- default:
+ case LATEX_LIST_ENVIRONMENT:
+ case LATEX_BIB_ENVIRONMENT:
+ case LATEX_COMMAND:
+ // FIXME This means that we are just skipping any paragraph that
+ // isn't implemented above, and this includes lists.
+ ++par;
break;
}
if (bstyle.latextype == LATEX_ENVIRONMENT && bstyle.pass_thru)
os << "]]>";
- // Closing outter tag
+ // Closing outer tag
sgml::closeTag(os, *pbegin);
return pend;
}
-ParagraphList::const_iterator makeCommand(Buffer const & buf,
- odocstream & os,
- OutputParams const & runparams,
- ParagraphList const & paragraphs,
- ParagraphList::const_iterator const & pbegin,
- ParagraphList::const_iterator const & pend)
+ParagraphList::const_iterator makeCommand(
+ Buffer const & buf,
+ odocstream & os,
+ OutputParams const & runparams,
+ Text const & text,
+ ParagraphList::const_iterator const & pbegin,
+ ParagraphList::const_iterator const & pend)
{
+ ParagraphList const & paragraphs = text.paragraphs();
ParagraphList::const_iterator par = pbegin;
Layout const & bstyle = par->layout();
if (!bstyle.labeltag().empty()) {
sgml::openTag(os, bstyle.labeltag());
// We don't care about appendix in DOCBOOK.
- os << par->expandLabel(bstyle, buf.params(), false);
+ os << par->expandDocBookLabel(bstyle, buf.params());
sgml::closeTag(os, bstyle.labeltag());
}
// Opend inner tag and close inner tags
sgml::openTag(os, bstyle.innertag());
- par->simpleDocBookOnePar(buf, os, runparams, outerFont(distance(paragraphs.begin(), par), paragraphs));
+ par->simpleDocBookOnePar(buf, os, runparams,
+ text.outerFont(distance(paragraphs.begin(), par)));
sgml::closeTag(os, bstyle.innertag());
os << '\n';
switch (style.latextype) {
case LATEX_COMMAND: {
send = searchCommand(par, pend);
- par = makeCommand(buf, os, runparams, paragraphs, par,send);
+ par = makeCommand(buf, os, runparams, text, par,send);
break;
}
case LATEX_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT: {
send = searchEnvironment(par, pend);
- par = makeEnvironment(buf, os, runparams, paragraphs, par,send);
+ par = makeEnvironment(buf, os, runparams, text, par,send);
break;
}
case LATEX_PARAGRAPH:
send = searchParagraph(par, pend);
- par = makeParagraph(buf, os, runparams, paragraphs, par,send);
+ par = makeParagraph(buf, os, runparams, text, par,send);
break;
- default:
+ case LATEX_BIB_ENVIRONMENT:
+ case LATEX_LIST_ENVIRONMENT:
+ // FIXME This means that we are just skipping any paragraph that
+ // isn't implemented above.
+ ++par;
break;
}
}
} // end anonym namespace
-void docbookParagraphs(ParagraphList const & paragraphs,
+void docbookParagraphs(Text const & text,
Buffer const & buf,
odocstream & os,
OutputParams const & runparams)
{
+ LASSERT(runparams.par_begin <= runparams.par_end,
+ { os << "<!-- Docbook Output Error -->\n"; return; });
+
+ ParagraphList const & paragraphs = text.paragraphs();
ParagraphList::const_iterator par = paragraphs.begin();
ParagraphList::const_iterator pend = paragraphs.end();
- LASSERT(runparams.par_begin <= runparams.par_end, /**/);
// if only part of the paragraphs will be outputed
if (runparams.par_begin != runparams.par_end) {
- par = boost::next(paragraphs.begin(), runparams.par_begin);
- pend = boost::next(paragraphs.begin(), runparams.par_end);
+ par = next(paragraphs.begin(), runparams.par_begin);
+ pend = 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;
switch (style.latextype) {
case LATEX_COMMAND: {
send = searchCommand(par, pend);
- par = makeCommand(buf, os, runparams, paragraphs, par,send);
+ par = makeCommand(buf, os, runparams, text, par, send);
break;
}
case LATEX_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT: {
send = searchEnvironment(par, pend);
- par = makeEnvironment(buf, os, runparams, paragraphs, par,send);
+ par = makeEnvironment(buf, os, runparams, text, par, send);
break;
}
case LATEX_PARAGRAPH:
send = searchParagraph(par, pend);
- par = makeParagraph(buf, os, runparams, paragraphs, par,send);
+ par = makeParagraph(buf, os, runparams, text, par, send);
break;
- default:
+ case LATEX_BIB_ENVIRONMENT:
+ case LATEX_LIST_ENVIRONMENT:
+ // FIXME This means that we are just skipping any paragraph that
+ // isn't implemented above.
+ ++par;
break;
}
// makeEnvironment may process more than one paragraphs and bypass pend