X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBuffer.cpp;h=d8296e9795a5721e06dec63ab1f0656d794adcb7;hb=9577dae301866e69016c26300826114a611ea779;hp=cbda6b010a06eaf4c11fd53196681e3748072b0a;hpb=1d494512fc2d76e76f65fe95dbe8f0777ccae367;p=lyx.git
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index cbda6b010a..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"
@@ -459,10 +460,12 @@ string Buffer::logName(LogType * type) const
FileName const fname(addName(temppath(),
onlyFilename(changeExtension(filename,
".log"))));
+
+ // FIXME: how do we know this is the name of the build log?
FileName const bname(
addName(path, onlyFilename(
changeExtension(filename,
- formats.extension("literate") + ".out"))));
+ formats.extension(bufferFormat()) + ".out"))));
// If no Latex log or Build log is newer, show Build log
@@ -1335,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()
@@ -2662,15 +2724,14 @@ void Buffer::autoSave() const
string Buffer::bufferFormat() const
{
- if (isDocBook())
- return "docbook";
- if (isLiterate())
- return "literate";
- if (params().useXetex)
- return "xetex";
- if (params().encoding().package() == Encoding::japanese)
- return "platex";
- return "latex";
+ string format = params().documentClass().outputFormat();
+ if (format == "latex") {
+ if (params().useXetex)
+ return "xetex";
+ if (params().encoding().package() == Encoding::japanese)
+ return "platex";
+ }
+ return format;
}
@@ -2741,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
@@ -2870,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;
}
@@ -3190,9 +3254,7 @@ static void setLabel(Buffer const & buf, ParIterator & it)
}
case LABEL_ENUMERATE: {
- // FIXME: Yes I know this is a really, really! bad solution
- // (Lgb)
- docstring enumcounter = from_ascii("enum");
+ docstring enumcounter = layout.counter.empty() ? from_ascii("enum") : layout.counter;
switch (par.itemdepth) {
case 2:
@@ -3213,31 +3275,9 @@ static void setLabel(Buffer const & buf, ParIterator & it)
// Maybe we have to reset the enumeration counter.
if (needEnumCounterReset(it))
counters.reset(enumcounter);
-
counters.step(enumcounter);
- string format;
-
- switch (par.itemdepth) {
- case 0:
- format = N_("\\arabic{enumi}.");
- break;
- case 1:
- format = N_("(\\alph{enumii})");
- break;
- case 2:
- format = N_("\\roman{enumiii}.");
- break;
- case 3:
- format = N_("\\Alph{enumiv}.");
- break;
- default:
- // not a valid enumdepth...
- break;
- }
-
- par.params().labelString(counters.counterLabel(
- par.translateIfPossible(from_ascii(format), bp)));
+ par.params().labelString(counters.theCounter(enumcounter));
break;
}