From 2aabb03a7435487c4343f71bd40273d4c4887c60 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sat, 6 Jul 2019 15:15:06 +0200 Subject: [PATCH] Fix nomencl generation with LuaTeX Fixes: #11571 --- src/LaTeX.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/LaTeX.cpp b/src/LaTeX.cpp index 74c875b840..cae5967c31 100644 --- a/src/LaTeX.cpp +++ b/src/LaTeX.cpp @@ -1246,14 +1246,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 +1341,22 @@ void LaTeX::deplog(DepTable & head) else // we suspect a line break fragment = true; - // (3) "\openout = `file.ext'." - } else if (regex_match(token, sub, reg3)) { + // (3)(a) "\openout = `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 = 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? -- 2.39.5