]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeX.cpp
Handle paragraph direction switch in captions (with polyglossia/bidi)
[lyx.git] / src / LaTeX.cpp
index 74c875b84057312538a89fab5e53cc3348b0a756..5cb5df4c782142e1b8a5c34e4217f4aca783ab88 100644 (file)
@@ -161,6 +161,10 @@ void LaTeX::removeAuxiliaryFiles() const
        FileName const gls(changeExtension(file.absFileName(), ".gls"));
        gls.removeFile();
 
+       // endnotes file
+       FileName const ent(changeExtension(file.absFileName(), ".ent"));
+       ent.removeFile();
+
        // Also remove the aux file
        FileName const aux(changeExtension(file.absFileName(), ".aux"));
        aux.removeFile();
@@ -774,7 +778,11 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                //Handles both "LaTeX Warning:" & "Package natbib Warning:"
                //Various handlers for missing citations below won't catch the problem if citation
                //key is long (>~25chars), because pdflatex splits output at line length 80.
-               if (contains(token, "There were undefined citations."))
+               //TODO: TL 2020 engines will contain new commandline switch --cnf-line which we  
+               //can use to set max_print_line variable for appropriate length and detect all
+               //errors correctly.
+               if (contains(token, "There were undefined citations.") ||
+                   prefixIs(token, "Package biblatex Warning: The following entry could not be found"))
                        retval |= UNDEF_CIT;
 
                if (prefixIs(token, "LaTeX Warning:") ||
@@ -796,6 +804,10 @@ int LaTeX::scanLogFile(TeXErrors & terr)
                        } else if (contains(token, "Etaremune labels have changed")) {
                                retval |= ERROR_RERUN;
                                LYXERR(Debug::LATEX, "Force rerun.");
+                       // package enotez
+                       } else if (contains(token, "Endnotes may have changed. Rerun")) {
+                               retval |= RERUN;
+                               LYXERR(Debug::LATEX, "We should rerun.");
                        //"Citation `cit' on page X undefined on input line X."
                        } else if (contains(token, "Citation")
                                   //&& contains(token, "on input line") //often split to newline
@@ -1246,14 +1258,16 @@ void LaTeX::deplog(DepTable & head)
 
        static regex const reg1("File: (.+).*");
        static regex const reg2("No file (.+)(.).*");
-       static regex const reg3("\\\\openout[0-9]+.*=.*`(.+)(..).*");
+       static regex const reg3a("\\\\openout[0-9]+.*=.*`(.+)(..).*");
+       // LuaTeX has a slightly different output
+       static regex const reg3b("\\\\openout[0-9]+.*=\\s*(.+)");
        // If an index should be created, MikTex does not write a line like
        //    \openout# = 'sample.idx'.
        // but instead only a line like this into the log:
        //   Writing index file sample.idx
        static regex const reg4("Writing index file (.+).*");
        static regex const regoldnomencl("Writing glossary file (.+).*");
-       static regex const regnomencl("Writing nomenclature file (.+).*");
+       static regex const regnomencl(".*Writing nomenclature file (.+).*");
        // If a toc should be created, MikTex does not write a line like
        //    \openout# = `sample.toc'.
        // but only a line like this into the log:
@@ -1339,14 +1353,22 @@ void LaTeX::deplog(DepTable & head)
                        else
                                // we suspect a line break
                                fragment = true;
-               // (3) "\openout<nr> = `file.ext'."
-               } else if (regex_match(token, sub, reg3)) {
+               // (3)(a) "\openout<nr> = `file.ext'."
+               } else if (regex_match(token, sub, reg3a)) {
                        // search for closing '. at the end of the line
                        if (sub.str(2) == "\'.")
                                fragment = !handleFoundFile(sub.str(1), head);
                        else
                                // potential fragment
                                fragment = true;
+               // (3)(b) "\openout<nr> = file.ext" (LuaTeX)
+               } else if (regex_match(token, sub, reg3b)) {
+                       // file names must contains a dot
+                       if (contains(sub.str(1), '.'))
+                               fragment = !handleFoundFile(sub.str(1), head);
+                       else
+                               // potential fragment
+                               fragment = true;
                // (4) "Writing index file file.ext"
                } else if (regex_match(token, sub, reg4))
                        // fragmential file name?