: cmd(latex), file(f), path(p), lpath(lp), runparams(rp), biber(false)
{
num_errors = 0;
- if (prefixIs(cmd, "pdf")) { // Do we use pdflatex ?
+ // lualatex can still produce a DVI with --output-format=dvi. However,
+ // we do not use that internally (we use the "dvilualatex" command) so
+ // it would only happen from a custom converter. Thus, it is better to
+ // guess that lualatex produces a PDF than to guess a DVI.
+ // FIXME we should base the extension on the output format, which we should
+ // get in a robust way, e.g. from the converter.
+ if (prefixIs(cmd, "pdf") || prefixIs(cmd, "lualatex") || prefixIs(cmd, "xelatex")) {
depfile = FileName(file.absFileName() + ".dep-pdf");
output_file =
FileName(changeExtension(file.absFileName(), ".pdf"));
FileName const aux(changeExtension(file.absFileName(), ".aux"));
aux.removeFile();
+ // Also remove the .out file (e.g. hyperref bookmarks) (#9963)
+ FileName const out(changeExtension(file.absFileName(), ".out"));
+ out.removeFile();
+
// Remove the output file, which is often generated even if error
output_file.removeFile();
}
scanres = scanLogFile(terr);
if (scanres & ERROR_RERUN) {
LYXERR(Debug::LATEX, "Rerunning LaTeX");
+ terr.clearErrors();
exit_code = startscript();
scanres = scanLogFile(terr);
}
continue;
result = true;
- string tmp = runparams.use_japanese ?
- lyxrc.jbibtex_command : lyxrc.bibtex_command;
-
- if (!runparams.bibtex_command.empty())
- tmp = runparams.bibtex_command;
+ string tmp = runparams.bibtex_command;
tmp += " ";
// onlyFileName() is needed for cygwin
tmp += quoteName(onlyFileName(removeExtension(
} else if (contains(token, "Rerun to get citations")) {
// Natbib seems to use this.
retval |= UNDEF_CIT;
- } else if (contains(token, "No pages of output")) {
- // A dvi file was not created
+ } else if (contains(token, "No pages of output")
+ || contains(token, "no pages of output")) {
+ // No output file (e.g. the DVI or PDF) was created
retval |= NO_OUTPUT;
} else if (contains(token, "That makes 100 errors")) {
// More than 100 errors were reprted
from_local8bit("pdfTeX Error"),
from_local8bit(token),
child_name);
- } else if (prefixIs(token, "Missing character: There is no ")) {
- // XeTeX/LuaTeX error about missing glyph in selected font
- // (bug 9610)
+ } else if (prefixIs(token, "Missing character: There is no ")
+ && !contains(token, "nullfont")) {
+ // 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!"),
return true;
// strip off part after last space and try again
string tmp = strippedfile;
- string const stripoff =
- rsplit(tmp, strippedfile, ' ');
+ rsplit(tmp, strippedfile, ' ');
absname.set(strippedfile);
if (insertIfExists(absname, head))
return true;
break;
// strip off part after last space and try again
string strippedfile;
- string const stripoff =
- rsplit(foundfile, strippedfile, ' ');
+ rsplit(foundfile, strippedfile, ' ');
foundfile = strippedfile;
onlyfile = onlyFileName(strippedfile);
absname = makeAbsPath(onlyfile);