#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
#include "LaTeX.h"
#include "bufferlist.h"
#include "gettext.h"
#include "support/path.h"
#include <boost/regex.hpp>
-#include "BoostFormat.h"
+#include "support/BoostFormat.h"
#include <fstream>
#include <cstdio> // sscanf
extern BufferList bufferlist;
+namespace {
+
+void showRunMessage(LyXFunc * lf, unsigned int count)
+{
+ ostringstream str;
+#if USE_BOOST_FORMAT
+ str << boost::format(_("Waiting for LaTeX run number %1$d")) % count;
+#else
+ str << _("Waiting for LaTeX run number ") << count;
+#endif
+ lf->dispatch(FuncRequest(LFUN_MESSAGE, STRCONV(str.str())));
+}
+
+
+};
/*
* CLASS TEXERRORS
*/
errors.push_back(newerr);
}
+
+bool operator==(Aux_Info const & a, Aux_Info const & o)
+{
+ return a.aux_file == o.aux_file &&
+ a.citations == o.citations &&
+ a.databases == o.databases &&
+ a.styles == o.styles;
+}
+
+
+bool operator!=(Aux_Info const & a, Aux_Info const & o)
+{
+ return !(a == o);
+}
+
+
/*
* CLASS LaTeX
*/
bool rerun = false; // rerun requested
// The class LaTeX does not know the temp path.
- bufferlist.updateIncludedTeXfiles(lyx::getcwd()); //GetCWD());
+ bufferlist.updateIncludedTeXfiles(lyx::getcwd());
// Never write the depfile if an error was encountered.
if (had_depfile) {
lyxerr[Debug::DEPEND] << "Dependency file exists" << endl;
// Read the dep file:
- head.read(depfile);
+ had_depfile = head.read(depfile);
+ }
+
+ if (had_depfile) {
// Update the checksums
head.update();
// Can't just check if anything has changed because it might have aborted
run_bibtex = true;
} else
lyxerr[Debug::DEPEND]
- << "Dependency file does not exist" << endl;
+ << "Dependency file does not exist, or has wrong format" << endl;
/// We scan the aux file even when had_depfile = false,
/// because we can run pdflatex on the file after running latex on it,
++count;
lyxerr[Debug::LATEX] << "Run #" << count << endl;
if (lfun) {
- ostringstream str;
-#if USE_BOOST_FORMAT
- str << boost::format(_("LaTeX run number %1$d")) % count;
-#else
- str << _("LaTeX run number ") << count;
-#endif
- lfun->dispatch(FuncRequest(LFUN_MESSAGE, STRCONV(str.str())));
+ showRunMessage(lfun, count);
}
- this->operator()();
+ startscript();
scanres = scanLogFile(terr);
if (scanres & ERROR_RERUN) {
lyxerr[Debug::LATEX] << "Rerunning LaTeX" << endl;
- this->operator()();
+ startscript();
scanres = scanLogFile(terr);
}
lyxerr[Debug::LATEX]
<< "Run #" << count << endl;
if (lfun) {
- ostringstream str;
-#if USE_BOOST_FORMAT
- str << boost::format(_("LaTeX run number %1$d")) % count;
-#else
- str << _("LaTeX run number ") << count;
-#endif
- // check lyxstring string stream and gcc 3.1 before fixing
- lfun->dispatch(FuncRequest(LFUN_MESSAGE, STRCONV(str.str())));
+ showRunMessage(lfun, count);
}
- this->operator()();
+ startscript();
scanres = scanLogFile(terr);
if (scanres & ERRORS) {
deleteFilesOnError();
++count;
lyxerr[Debug::LATEX] << "Run #" << count << endl;
if (lfun) {
- ostringstream str;
-#if USE_BOOST_FORMAT
- str << boost::format(_("LaTeX run number %1$d")) % count;
-#else
- str << _("LaTeX run number ") << count;
-#endif
- lfun->dispatch(FuncRequest(LFUN_MESSAGE, STRCONV(str.str())));
+ showRunMessage(lfun, count);
}
- this->operator()();
+ startscript();
scanres = scanLogFile(terr);
if (scanres & ERRORS) {
deleteFilesOnError();
}
-int LaTeX::operator()()
+int LaTeX::startscript()
{
#ifndef __EMX__
string tmp = cmd + ' ' + QuoteName(file) + " > /dev/null";
result.push_back(scanAuxFile(file));
for (int i = 1; i < 1000; ++i) {
- string file2 = ChangeExtension(file, "") + "." + tostr(i)
+ string file2 = ChangeExtension(file, "") + '.' + tostr(i)
+ ".aux";
FileInfo fi(file2);
if (!fi.exist())
string database;
data = split(data, database, ',');
database = ChangeExtension(database, "bib");
- lyxerr[Debug::LATEX] << "Bibtex database: `"
- << database << "'" << endl;
+ lyxerr[Debug::LATEX] << "BibTeX database: `"
+ << database << '\'' << endl;
aux_info.databases.insert(database);
}
} else if (regex_match(STRCONV(token), sub, reg3)) {
// token is now the style file
// pass it to the helper
style = ChangeExtension(style, "bst");
- lyxerr[Debug::LATEX] << "Bibtex style: `"
- << style << "'" << endl;
+ lyxerr[Debug::LATEX] << "BibTeX style: `"
+ << style << '\'' << endl;
aux_info.styles.insert(style);
} else if (regex_match(STRCONV(token), sub, reg4)) {
string const file2 = STRCONV(sub.str(1));
<< "We should rerun." << endl;
retval |= RERUN;
}
- } else if (prefixIs(token, "(")) {
+ } else if (token[0] == '(') {
if (contains(token, "Rerun LaTeX") ||
contains(token, "Rerun to get")) {
// Used by natbib