]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeX.cpp
Revert previous commit, which committed too much.
[lyx.git] / src / LaTeX.cpp
index 64a1c7a259347d24daa7582ec0262d9ad86dc4c5..04a86f795a95cd6de5b36fc98e4e3cd03a22662d 100644 (file)
@@ -93,8 +93,8 @@ bool operator!=(AuxInfo const & a, AuxInfo const & o)
  */
 
 LaTeX::LaTeX(string const & latex, OutputParams const & rp,
-            FileName const & f)
-       : cmd(latex), file(f), runparams(rp)
+            FileName const & f, string const & p)
+       : cmd(latex), file(f), path(p), runparams(rp)
 {
        num_errors = 0;
        if (prefixIs(cmd, "pdf")) { // Do we use pdflatex ?
@@ -421,7 +421,7 @@ int LaTeX::startscript()
                     + quoteName(onlyFileName(file.toFilesystemEncoding()))
                     + " > " + os::nulldev();
        Systemcall one;
-       return one.startscript(Systemcall::Wait, tmp);
+       return one.startscript(Systemcall::Wait, tmp, path);
 }
 
 
@@ -448,7 +448,7 @@ bool LaTeX::runMakeIndex(string const & f, OutputParams const & runparams,
        tmp += quoteName(f);
        tmp += params;
        Systemcall one;
-       one.startscript(Systemcall::Wait, tmp);
+       one.startscript(Systemcall::Wait, tmp, path);
        return true;
 }
 
@@ -464,7 +464,7 @@ bool LaTeX::runMakeIndexNomencl(FileName const & file,
        tmp += " -o "
                + onlyFileName(changeExtension(file.toFilesystemEncoding(), nls));
        Systemcall one;
-       one.startscript(Systemcall::Wait, tmp);
+       one.startscript(Systemcall::Wait, tmp, path);
        return true;
 }
 
@@ -604,7 +604,7 @@ bool LaTeX::runBibTeX(vector<AuxInfo> const & bibtex_info,
                tmp += quoteName(onlyFileName(removeExtension(
                                it->aux_file.absFileName())));
                Systemcall one;
-               one.startscript(Systemcall::Wait, tmp);
+               one.startscript(Systemcall::Wait, tmp, path);
        }
        // Return whether bibtex was run
        return result;
@@ -757,6 +757,12 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                                }
                        }
 
+                       if (prefixIs(token, "! Paragraph ended before \\Hy@setref@link was complete.")){
+                                       // bug 7344. We must rerun LaTeX if hyperref has been toggled.
+                                       retval |= ERROR_RERUN;
+                                       LYXERR(Debug::LATEX, "Force rerun.");
+                       }
+
                        if (!wait_for_error.empty() && prefixIs(token, "! Emergency stop.")){
                                retval |= LATEX_ERROR;
                                string errstr;
@@ -1040,6 +1046,10 @@ void LaTeX::deplog(DepTable & head)
                        continue;
                }
 
+               // FIXME UNICODE: We assume that the file names in the log
+               // file are in the file system encoding.
+               token = to_utf8(from_filesystem8bit(token));
+
                // Sometimes, filenames are broken across lines.
                // We care for that and save suspicious lines.
                // Here we exclude some cases where we are sure
@@ -1069,10 +1079,6 @@ void LaTeX::deplog(DepTable & head)
 
                smatch sub;
 
-               // FIXME UNICODE: We assume that the file names in the log
-               // file are in the file system encoding.
-               token = to_utf8(from_filesystem8bit(token));
-
                // (1) "File: file.ext"
                if (regex_match(token, sub, reg1)) {
                        // check for dot