]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeX.C
*** empty log message ***
[lyx.git] / src / LaTeX.C
index a8106ccf2fd5f4ff3f811f22d8e967b8834441c5..77598bf9f69c7ac964cfdb53d601fda3a8bc92ed 100644 (file)
@@ -28,6 +28,7 @@
 #include "support/path.h"
 #include "support/LRegex.h"
 #include "support/LSubstring.h"
+#include "support/lstrings.h"
 #include "bufferlist.h"
 #include "gettext.h"
 #include "lyx_gui_misc.h"
@@ -177,11 +178,9 @@ int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
        if (lfun) {
                ostringstream str;
                str << _("LaTeX run number") << ' ' << count;
-               lfun->Dispatch(LFUN_MESSAGE, str.str().c_str());
+               lfun->dispatch(LFUN_MESSAGE, str.str().c_str());
        }
        
-       
-       //WriteStatus(lfun, string(_("LaTeX run number ")) + tostr(count));
        this->operator()();
        scanres = scanLogFile(terr);
        if (scanres & ERROR_RERUN) {
@@ -214,8 +213,10 @@ int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
        if (head.haschanged(OnlyFilename(ChangeExtension(file, ".idx")))) {
                // no checks for now
                lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
-               if (lfun) lfun->Dispatch(LFUN_MESSAGE, _("Running MakeIndex."));
-//             WriteStatus(minib, _("Running MakeIndex."));
+               if (lfun) {
+                       lfun->dispatch(LFUN_MESSAGE, _("Running MakeIndex."));
+               }
+               
                rerun = runMakeIndex(OnlyFilename(ChangeExtension(file, ".idx")));
        }
 
@@ -227,15 +228,18 @@ int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
                // tags is found -> run bibtex and set rerun = true;
                // no checks for now
                lyxerr[Debug::LATEX] << "Running BibTeX." << endl;
-               if (lfun) lfun->Dispatch(LFUN_MESSAGE, _("Running BibTeX."));
-               //WriteStatus(minib, _("Running BibTeX."));
+               if (lfun) {
+                       lfun->dispatch(LFUN_MESSAGE, _("Running BibTeX."));
+               }
+               
                updateBibtexDependencies(head, bibtex_info);
                rerun |= runBibTeX(bibtex_info);
-       } else if (!had_depfile)
+       } else if (!had_depfile) {
                /// If we run pdflatex on the file after running latex on it,
                /// then we do not need to run bibtex, but we do need to
                /// insert the .bib and .bst files into the .dep-pdf file.
                updateBibtexDependencies(head, bibtex_info);
+       }
        
        // 1
        // we know on this point that latex has been run once (or we just
@@ -259,11 +263,9 @@ int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
                if (lfun) {
                        ostringstream str;
                        str << _("LaTeX run number") << ' ' << count;
-                       lfun->Dispatch(LFUN_MESSAGE, str.str().c_str());
+                       lfun->dispatch(LFUN_MESSAGE, str.str().c_str());
                }
                
-//             WriteStatus(minib,
-//                         string(_("LaTeX run number ")) + tostr(count));
                this->operator()();
                scanres = scanLogFile(terr);
                if (scanres & ERRORS) {
@@ -290,8 +292,10 @@ int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
        if (head.haschanged(OnlyFilename(ChangeExtension(file, ".idx")))) {
                // no checks for now
                lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
-               if (lfun) lfun->Dispatch(LFUN_MESSAGE, _("Running MakeIndex."));
-               //WriteStatus(minib, _("Running MakeIndex."));
+               if (lfun) {
+                       lfun->dispatch(LFUN_MESSAGE, _("Running MakeIndex."));
+               }
+               
                rerun = runMakeIndex(OnlyFilename(ChangeExtension(file, ".idx")));
        }
        
@@ -315,10 +319,9 @@ int LaTeX::run(TeXErrors & terr, LyXFunc * lfun)
                if (lfun) {
                        ostringstream str;
                        str << _("LaTeX run number") << ' ' << count;
-                       lfun->Dispatch(LFUN_MESSAGE, str.str().c_str());
+                       lfun->dispatch(LFUN_MESSAGE, str.str().c_str());
                }
                
-//             WriteStatus(minib, string(_("LaTeX run number ")) + tostr(count));
                this->operator()();
                scanres = scanLogFile(terr);
                if (scanres & ERRORS) {
@@ -407,6 +410,7 @@ void LaTeX::scanAuxFile(string const & file, Aux_Info & aux_info)
        LRegex reg4("\\\\@input\\{([^}]+)\\}");
 
        while (getline(ifs, token)) {
+               token = strip(token, '\r');
                if (reg1.exact_match(token)) {
                        LRegex::SubMatches const & sub = reg1.exec(token);
                        string data = LSubstring(token, sub[1].first,
@@ -541,8 +545,20 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                                }
                        } else if (contains(token, "run BibTeX")) {
                                retval |= UNDEF_CIT;
-                       } else if (contains(token, "Rerun LaTeX.")) {
-                               // at least longtable.sty might use this.
+                       } else if (contains(token, "Rerun LaTeX") ||
+                                  contains(token, "Rerun to get")) {
+                               // at least longtable.sty and bibtopic.sty
+                               // might use this.
+                               lyxerr[Debug::LATEX]
+                                       << "We should rerun." << endl;
+                               retval |= RERUN;
+                       }
+               } else if (prefixIs(token, "(")) {
+                       if (contains(token, "Rerun LaTeX") ||
+                           contains(token, "Rerun to get")) {
+                               // Used by natbib
+                               lyxerr[Debug::LATEX]
+                                       << "We should rerun." << endl;
                                retval |= RERUN;
                        }
                } else if (prefixIs(token, "! ")) {
@@ -645,6 +661,7 @@ void LaTeX::deplog(DepTable & head)
                string foundfile;
                string token;
                getline(ifs, token);
+               token = strip(token, '\r');
                if (token.empty()) continue;
                
                if (reg1.exact_match(token)) {