return bformat(_("Waiting for LaTeX run number %1$d"), count);
}
-} // anon namespace
+} // namespace
/*
* CLASS TEXERRORS
} else {
LYXERR(Debug::DEPEND, "Dep. file has NOT changed");
}
-
+
// 3
// rerun bibtex?
// Complex bibliography packages such as Biblatex require
{
string tmp = runparams.use_japanese ?
lyxrc.jindex_command : lyxrc.index_command;
-
+
if (!runparams.index_command.empty())
tmp = runparams.index_command;
onlyFileName(changeExtension(file.absFileName(), ".log"));
LYXERR(Debug::LATEX, "Log file: " << tmp);
FileName const fn = FileName(makeAbsPath(tmp));
+ // FIXME we should use an ifdocstream here and a docstring for token
+ // below. The encoding of the log file depends on the _output_ (font)
+ // encoding of the TeX file (T1, TU etc.). See #10728.
ifstream ifs(fn.toFilesystemEncoding().c_str());
bool fle_style = false;
static regex const file_line_error(".+\\.\\D+:[0-9]+: (.+)");
}
}
- if (prefixIs(token, "! Incomplete \\ifx")) {
+ if (prefixIs(token, "! Incomplete \\if")) {
// bug 10666. At this point its not clear we finish with error.
wait_for_error = desc;
continue;
} while (!contains(tmp, "(job aborted"));
terr.insertError(0,
- from_local8bit("Emergency stop"),
+ from_ascii("Emergency stop"),
from_local8bit(errstr),
child_name);
}
|| contains(token, "no pages of output")) {
// No output file (e.g. the DVI or PDF) was created
retval |= NO_OUTPUT;
+ } else if (contains(token, "Error 256 (driver return code)")) {
+ // This is a xdvipdfmx driver error reported by XeTeX.
+ // We have to check whether an output PDF file was created.
+ FileName pdffile = file;
+ pdffile.changeExtension("pdf");
+ if (!pdffile.exists())
+ // No output PDF file was created (see #10076)
+ retval |= NO_OUTPUT;
} else if (contains(token, "That makes 100 errors")) {
- // More than 100 errors were reprted
+ // More than 100 errors were reported
retval |= TOO_MANY_ERRORS;
} else if (prefixIs(token, "!pdfTeX error:")) {
// otherwise we dont catch e.g.:
// !pdfTeX error: pdflatex (file feyn10): Font feyn10 at 600 not found
retval |= ERRORS;
terr.insertError(0,
- from_local8bit("pdfTeX Error"),
+ from_ascii("pdfTeX Error"),
from_local8bit(token),
child_name);
} else if (!ignore_missing_glyphs
// Warning about missing glyph in selected font
// may be dataloss (bug 9610)
// but can be ignored for 'nullfont' (bug 10394).
- retval |= LATEX_ERROR;
- terr.insertError(0,
- from_local8bit("Missing glyphs!"),
- from_local8bit(token),
- child_name);
+ // as well as for ZERO WIDTH NON-JOINER (0x200C) which is
+ // missing in many fonts and output for ligature break (bug 10727).
+ // Since this error only occurs with utf8 output, we can safely assume
+ // that the log file is utf8-encoded
+ docstring const utoken = from_utf8(token);
+ if (!contains(utoken, 0x200C)) {
+ retval |= LATEX_ERROR;
+ terr.insertError(0,
+ from_ascii("Missing glyphs!"),
+ utoken,
+ child_name);
+ }
} else if (!wait_for_error.empty()) {
// We collect information until we know we have an error.
wait_for_error += token + '\n';
return result;
}
-} // anon namespace
+} // namespace
void LaTeX::deplog(DepTable & head)