X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBuffer.cpp;h=d8296e9795a5721e06dec63ab1f0656d794adcb7;hb=9577dae301866e69016c26300826114a611ea779;hp=a6e22177f6af8ec1113de3b48ad3dc6601cf60b7;hpb=f28c1a2cce7204bb5ade88f988dc1138f9b1cdea;p=lyx.git diff --git a/src/Buffer.cpp b/src/Buffer.cpp index a6e22177f6..d8296e9795 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -47,6 +47,7 @@ #include "output_docbook.h" #include "output.h" #include "output_latex.h" +#include "output_xhtml.h" #include "output_plaintext.h" #include "paragraph_funcs.h" #include "Paragraph.h" @@ -1337,6 +1338,65 @@ void Buffer::writeDocBookSource(odocstream & os, string const & fname, } +void Buffer::makeLyXHTMLFile(FileName const & fname, + OutputParams const & runparams, + bool const body_only) const +{ + LYXERR(Debug::LATEX, "makeLYXHTMLFile..."); + + ofdocstream ofs; + if (!openFileWrite(ofs, fname)) + return; + + writeLyXHTMLSource(ofs, runparams, body_only); + + ofs.close(); + if (ofs.fail()) + lyxerr << "File '" << fname << "' was not closed properly." << endl; +} + + +void Buffer::writeLyXHTMLSource(odocstream & os, + OutputParams const & runparams, + bool const only_body) const +{ + LaTeXFeatures features(*this, params(), runparams); + validate(features); + + d->texrow.reset(); + + if (!only_body) { + os << "\n"; + // FIXME Language should be set properly. + os << "\n"; + // FIXME Header + os << "\n"; + // FIXME Presumably need to set this right + os << "\n"; + // FIXME Get this during validation? What about other meta-data? + os << "TBA\n"; + + os << features.getTClassHTMLPreamble(); + + os << '\n'; + + docstring const styleinfo = features.getTClassHTMLStyles(); + if (!styleinfo.empty()) { + os << "\n"; + } + os << "\n\n"; + } + + params().documentClass().counters().reset(); + xhtmlParagraphs(paragraphs(), *this, os, runparams); + if (!only_body) + os << "\n\n"; +} + + // chktex should be run with these flags disabled: 3, 22, 25, 30, 38(?) // Other flags: -wall -v0 -x int Buffer::runChktex() @@ -2742,6 +2802,8 @@ bool Buffer::doExport(string const & format, bool put_in_tempdir, if (backend_format == "text") writePlaintextFile(*this, FileName(filename), runparams); // no backend + else if (backend_format == "xhtml") + makeLyXHTMLFile(FileName(filename), runparams); else if (backend_format == "lyx") writeFile(FileName(filename)); // Docbook backend @@ -2871,6 +2933,7 @@ vector Buffer::backends() const v.push_back("pdflatex"); } v.push_back("text"); + v.push_back("xhtml"); v.push_back("lyx"); return v; }