mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
* src/LaTeX.C: whitespace & add author
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@17292 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
fed67a2d50
commit
6965a879b5
114
src/LaTeX.C
114
src/LaTeX.C
@ -8,6 +8,7 @@
|
|||||||
* \author Jean-Marc Lasgouttes
|
* \author Jean-Marc Lasgouttes
|
||||||
* \author Angus Leeming
|
* \author Angus Leeming
|
||||||
* \author Dekel Tsur
|
* \author Dekel Tsur
|
||||||
|
* \author Jürgen Spitzmüller
|
||||||
*
|
*
|
||||||
* Full author contact details are available in file CREDITS.
|
* Full author contact details are available in file CREDITS.
|
||||||
*/
|
*/
|
||||||
@ -133,10 +134,12 @@ LaTeX::LaTeX(string const & latex, OutputParams const & rp,
|
|||||||
num_errors = 0;
|
num_errors = 0;
|
||||||
if (prefixIs(cmd, "pdf")) { // Do we use pdflatex ?
|
if (prefixIs(cmd, "pdf")) { // Do we use pdflatex ?
|
||||||
depfile = FileName(file.absFilename() + ".dep-pdf");
|
depfile = FileName(file.absFilename() + ".dep-pdf");
|
||||||
output_file = FileName(changeExtension(file.absFilename(), ".pdf"));
|
output_file =
|
||||||
|
FileName(changeExtension(file.absFilename(), ".pdf"));
|
||||||
} else {
|
} else {
|
||||||
depfile = FileName(file.absFilename() + ".dep");
|
depfile = FileName(file.absFilename() + ".dep");
|
||||||
output_file = FileName(changeExtension(file.absFilename(), ".dvi"));
|
output_file =
|
||||||
|
FileName(changeExtension(file.absFilename(), ".dvi"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,8 +177,8 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
// We know that this function will only be run if the lyx buffer
|
// We know that this function will only be run if the lyx buffer
|
||||||
// has been changed. We also know that a newly written .tex file
|
// has been changed. We also know that a newly written .tex file
|
||||||
// is always different from the previous one because of the date
|
// is always different from the previous one because of the date
|
||||||
// in it. However it seems safe to run latex (at least) on time each
|
// in it. However it seems safe to run latex (at least) on time
|
||||||
// time the .tex file changes.
|
// each time the .tex file changes.
|
||||||
{
|
{
|
||||||
int scanres = NO_ERRORS;
|
int scanres = NO_ERRORS;
|
||||||
unsigned int count = 0; // number of times run
|
unsigned int count = 0; // number of times run
|
||||||
@ -185,7 +188,8 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
bool rerun = false; // rerun requested
|
bool rerun = false; // rerun requested
|
||||||
|
|
||||||
// The class LaTeX does not know the temp path.
|
// The class LaTeX does not know the temp path.
|
||||||
theBufferList().updateIncludedTeXfiles(getcwd().absFilename(), runparams);
|
theBufferList().updateIncludedTeXfiles(getcwd().absFilename(),
|
||||||
|
runparams);
|
||||||
|
|
||||||
// Never write the depfile if an error was encountered.
|
// Never write the depfile if an error was encountered.
|
||||||
|
|
||||||
@ -218,12 +222,14 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
if (had_depfile) {
|
if (had_depfile) {
|
||||||
// Update the checksums
|
// Update the checksums
|
||||||
head.update();
|
head.update();
|
||||||
// Can't just check if anything has changed because it might have aborted
|
// Can't just check if anything has changed because it might
|
||||||
// on error last time... in which cas we need to re-run latex
|
// have aborted on error last time... in which cas we need
|
||||||
// and collect the error messages (even if they are the same).
|
// to re-run latex and collect the error messages
|
||||||
|
// (even if they are the same).
|
||||||
if (!fs::exists(output_file.toFilesystemEncoding())) {
|
if (!fs::exists(output_file.toFilesystemEncoding())) {
|
||||||
lyxerr[Debug::DEPEND]
|
lyxerr[Debug::DEPEND]
|
||||||
<< "re-running LaTeX because output file doesn't exist." << endl;
|
<< "re-running LaTeX because output file doesn't exist."
|
||||||
|
<< endl;
|
||||||
} else if (!head.sumchange()) {
|
} else if (!head.sumchange()) {
|
||||||
lyxerr[Debug::DEPEND] << "return no_change" << endl;
|
lyxerr[Debug::DEPEND] << "return no_change" << endl;
|
||||||
return NO_CHANGE;
|
return NO_CHANGE;
|
||||||
@ -236,7 +242,8 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
run_bibtex = true;
|
run_bibtex = true;
|
||||||
} else
|
} else
|
||||||
lyxerr[Debug::DEPEND]
|
lyxerr[Debug::DEPEND]
|
||||||
<< "Dependency file does not exist, or has wrong format" << endl;
|
<< "Dependency file does not exist, or has wrong format"
|
||||||
|
<< endl;
|
||||||
|
|
||||||
/// We scan the aux file even when had_depfile = false,
|
/// We scan the aux file even when had_depfile = false,
|
||||||
/// because we can run pdflatex on the file after running latex on it,
|
/// because we can run pdflatex on the file after running latex on it,
|
||||||
@ -289,14 +296,22 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
|
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
|
||||||
message(_("Running MakeIndex."));
|
message(_("Running MakeIndex."));
|
||||||
// onlyFilename() is needed for cygwin
|
// onlyFilename() is needed for cygwin
|
||||||
rerun |= runMakeIndex(onlyFilename(idxfile.absFilename()), runparams);
|
rerun |= runMakeIndex(onlyFilename(idxfile.absFilename()),
|
||||||
|
runparams);
|
||||||
}
|
}
|
||||||
if (head.haschanged(FileName(changeExtension(file.absFilename(), ".nlo")))) {
|
if (head.haschanged(FileName(changeExtension(file.absFilename(), ".nlo")))) {
|
||||||
lyxerr[Debug::LATEX] << "Running MakeIndex for nomencl." << endl;
|
lyxerr[Debug::LATEX]
|
||||||
|
<< "Running MakeIndex for nomencl."
|
||||||
|
<< endl;
|
||||||
message(_("Running MakeIndex for nomencl."));
|
message(_("Running MakeIndex for nomencl."));
|
||||||
// onlyFilename() is needed for cygwin
|
// onlyFilename() is needed for cygwin
|
||||||
string const nomenclstr = " -s nomencl.ist -o " + onlyFilename(changeExtension(file.toFilesystemEncoding(), ".nls"));
|
string const nomenclstr = " -s nomencl.ist -o "
|
||||||
rerun |= runMakeIndex(onlyFilename(changeExtension(file.absFilename(), ".nlo")), runparams, nomenclstr);
|
+ onlyFilename(changeExtension(
|
||||||
|
file.toFilesystemEncoding(), ".nls"));
|
||||||
|
rerun |= runMakeIndex(onlyFilename(changeExtension(
|
||||||
|
file.absFilename(), ".nlo")),
|
||||||
|
runparams,
|
||||||
|
nomenclstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// run bibtex
|
// run bibtex
|
||||||
@ -333,7 +348,8 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
rerun = false;
|
rerun = false;
|
||||||
++count;
|
++count;
|
||||||
lyxerr[Debug::DEPEND]
|
lyxerr[Debug::DEPEND]
|
||||||
<< "Dep. file has changed or rerun requested" << endl;
|
<< "Dep. file has changed or rerun requested"
|
||||||
|
<< endl;
|
||||||
lyxerr[Debug::LATEX]
|
lyxerr[Debug::LATEX]
|
||||||
<< "Run #" << count << endl;
|
<< "Run #" << count << endl;
|
||||||
message(runMessage(count));
|
message(runMessage(count));
|
||||||
@ -348,7 +364,9 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
deplog(head); // reads the latex log
|
deplog(head); // reads the latex log
|
||||||
head.update();
|
head.update();
|
||||||
} else {
|
} else {
|
||||||
lyxerr[Debug::DEPEND] << "Dep. file has NOT changed" << endl;
|
lyxerr[Debug::DEPEND]
|
||||||
|
<< "Dep. file has NOT changed"
|
||||||
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1.5
|
// 1.5
|
||||||
@ -365,16 +383,24 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
|
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
|
||||||
message(_("Running MakeIndex."));
|
message(_("Running MakeIndex."));
|
||||||
// onlyFilename() is needed for cygwin
|
// onlyFilename() is needed for cygwin
|
||||||
rerun = runMakeIndex(onlyFilename(changeExtension(file.absFilename(), ".idx")), runparams);
|
rerun = runMakeIndex(onlyFilename(changeExtension(
|
||||||
|
file.absFilename(), ".idx")), runparams);
|
||||||
}
|
}
|
||||||
|
|
||||||
// I am not pretty sure if need this twice.
|
// I am not pretty sure if need this twice.
|
||||||
if (head.haschanged(FileName(changeExtension(file.absFilename(), ".nlo")))) {
|
if (head.haschanged(FileName(changeExtension(file.absFilename(), ".nlo")))) {
|
||||||
lyxerr[Debug::LATEX] << "Running MakeIndex for nomencl." << endl;
|
lyxerr[Debug::LATEX]
|
||||||
|
<< "Running MakeIndex for nomencl."
|
||||||
|
<< endl;
|
||||||
message(_("Running MakeIndex for nomencl."));
|
message(_("Running MakeIndex for nomencl."));
|
||||||
// onlyFilename() is needed for cygwin
|
// onlyFilename() is needed for cygwin
|
||||||
string nomenclstr = " -s nomencl.ist -o " + onlyFilename(changeExtension(file.toFilesystemEncoding(), ".nls"));
|
string nomenclstr = " -s nomencl.ist -o "
|
||||||
rerun |= runMakeIndex(onlyFilename(changeExtension(file.absFilename(), ".nlo")), runparams, nomenclstr);
|
+ onlyFilename(changeExtension(
|
||||||
|
file.toFilesystemEncoding(), ".nls"));
|
||||||
|
rerun |= runMakeIndex(onlyFilename(changeExtension(
|
||||||
|
file.absFilename(), ".nlo")),
|
||||||
|
runparams,
|
||||||
|
nomenclstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2
|
// 2
|
||||||
@ -416,7 +442,9 @@ int LaTeX::run(TeXErrors & terr)
|
|||||||
int LaTeX::startscript()
|
int LaTeX::startscript()
|
||||||
{
|
{
|
||||||
// onlyFilename() is needed for cygwin
|
// onlyFilename() is needed for cygwin
|
||||||
string tmp = cmd + ' ' + quoteName(onlyFilename(file.toFilesystemEncoding())) + " > " + os::nulldev();
|
string tmp = cmd + ' '
|
||||||
|
+ quoteName(onlyFilename(file.toFilesystemEncoding()))
|
||||||
|
+ " > " + os::nulldev();
|
||||||
Systemcall one;
|
Systemcall one;
|
||||||
return one.startscript(Systemcall::Wait, tmp);
|
return one.startscript(Systemcall::Wait, tmp);
|
||||||
}
|
}
|
||||||
@ -561,7 +589,8 @@ bool LaTeX::runBibTeX(vector<Aux_Info> const & bibtex_info)
|
|||||||
|
|
||||||
string tmp = lyxrc.bibtex_command + " ";
|
string tmp = lyxrc.bibtex_command + " ";
|
||||||
// onlyFilename() is needed for cygwin
|
// onlyFilename() is needed for cygwin
|
||||||
tmp += quoteName(onlyFilename(removeExtension(it->aux_file.absFilename())));
|
tmp += quoteName(onlyFilename(removeExtension(
|
||||||
|
it->aux_file.absFilename())));
|
||||||
Systemcall one;
|
Systemcall one;
|
||||||
one.startscript(Systemcall::Wait, tmp);
|
one.startscript(Systemcall::Wait, tmp);
|
||||||
}
|
}
|
||||||
@ -575,7 +604,8 @@ int LaTeX::scanLogFile(TeXErrors & terr)
|
|||||||
int last_line = -1;
|
int last_line = -1;
|
||||||
int line_count = 1;
|
int line_count = 1;
|
||||||
int retval = NO_ERRORS;
|
int retval = NO_ERRORS;
|
||||||
string tmp = onlyFilename(changeExtension(file.absFilename(), ".log"));
|
string tmp =
|
||||||
|
onlyFilename(changeExtension(file.absFilename(), ".log"));
|
||||||
lyxerr[Debug::LATEX] << "Log file: " << tmp << endl;
|
lyxerr[Debug::LATEX] << "Log file: " << tmp << endl;
|
||||||
FileName const fn = FileName(makeAbsPath(tmp));
|
FileName const fn = FileName(makeAbsPath(tmp));
|
||||||
ifstream ifs(fn.toFilesystemEncoding().c_str());
|
ifstream ifs(fn.toFilesystemEncoding().c_str());
|
||||||
@ -657,7 +687,8 @@ int LaTeX::scanLogFile(TeXErrors & terr)
|
|||||||
if (prefixIs(tmp, "l.")) {
|
if (prefixIs(tmp, "l.")) {
|
||||||
// we have a latex error
|
// we have a latex error
|
||||||
retval |= TEX_ERROR;
|
retval |= TEX_ERROR;
|
||||||
if (contains(desc, "Package babel Error: You haven't defined the language"))
|
if (contains(desc,
|
||||||
|
"Package babel Error: You haven't defined the language"))
|
||||||
retval |= ERROR_RERUN;
|
retval |= ERROR_RERUN;
|
||||||
// get the line number:
|
// get the line number:
|
||||||
int line = 0;
|
int line = 0;
|
||||||
@ -693,7 +724,9 @@ int LaTeX::scanLogFile(TeXErrors & terr)
|
|||||||
// but it can include bits from the
|
// but it can include bits from the
|
||||||
// document, so whatever encoding we
|
// document, so whatever encoding we
|
||||||
// assume here it can be wrong.
|
// assume here it can be wrong.
|
||||||
terr.insertError(line, from_local8bit(desc), from_local8bit(errstr));
|
terr.insertError(line,
|
||||||
|
from_local8bit(desc),
|
||||||
|
from_local8bit(errstr));
|
||||||
++num_errors;
|
++num_errors;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -783,7 +816,8 @@ bool handleFoundFile(string const & ff, DepTable & head)
|
|||||||
else {
|
else {
|
||||||
// strip off part after last space and try again
|
// strip off part after last space and try again
|
||||||
string strippedfile;
|
string strippedfile;
|
||||||
string const stripoff = rsplit(foundfile, strippedfile, ' ');
|
string const stripoff =
|
||||||
|
rsplit(foundfile, strippedfile, ' ');
|
||||||
foundfile = strippedfile;
|
foundfile = strippedfile;
|
||||||
onlyfile = onlyFilename(strippedfile);
|
onlyfile = onlyFilename(strippedfile);
|
||||||
absname = makeAbsPath(onlyfile);
|
absname = makeAbsPath(onlyfile);
|
||||||
@ -842,11 +876,12 @@ bool checkLineBreak(string const & ff, DepTable & head)
|
|||||||
|
|
||||||
void LaTeX::deplog(DepTable & head)
|
void LaTeX::deplog(DepTable & head)
|
||||||
{
|
{
|
||||||
// This function reads the LaTeX log file end extracts all the external
|
// This function reads the LaTeX log file end extracts all the
|
||||||
// files used by the LaTeX run. The files are then entered into the
|
// external files used by the LaTeX run. The files are then
|
||||||
// dependency file.
|
// entered into the dependency file.
|
||||||
|
|
||||||
string const logfile = onlyFilename(changeExtension(file.absFilename(), ".log"));
|
string const logfile =
|
||||||
|
onlyFilename(changeExtension(file.absFilename(), ".log"));
|
||||||
|
|
||||||
static regex reg1("File: (.+).*");
|
static regex reg1("File: (.+).*");
|
||||||
static regex reg2("No file (.+)(.).*");
|
static regex reg2("No file (.+)(.).*");
|
||||||
@ -876,7 +911,6 @@ void LaTeX::deplog(DepTable & head)
|
|||||||
// Sometimes files are named by "File: xxx" only
|
// Sometimes files are named by "File: xxx" only
|
||||||
// So I think we should use some regexps to find files instead.
|
// So I think we should use some regexps to find files instead.
|
||||||
// Note: all file names and paths might contains spaces.
|
// Note: all file names and paths might contains spaces.
|
||||||
|
|
||||||
bool found_file = false;
|
bool found_file = false;
|
||||||
string token;
|
string token;
|
||||||
getline(ifs, token);
|
getline(ifs, token);
|
||||||
@ -899,14 +933,14 @@ void LaTeX::deplog(DepTable & head)
|
|||||||
static regex package_info("Package \\w+ Info: .*");
|
static regex package_info("Package \\w+ Info: .*");
|
||||||
static regex package_warning("Package \\w+ Warning: .*");
|
static regex package_warning("Package \\w+ Warning: .*");
|
||||||
if (prefixIs(token, "File:") || prefixIs(token, "(Font)")
|
if (prefixIs(token, "File:") || prefixIs(token, "(Font)")
|
||||||
|| prefixIs(token, "Package:")
|
|| prefixIs(token, "Package:")
|
||||||
|| prefixIs(token, "Language:")
|
|| prefixIs(token, "Language:")
|
||||||
|| prefixIs(token, "LaTeX Info:")
|
|| prefixIs(token, "LaTeX Info:")
|
||||||
|| prefixIs(token, "LaTeX Font Info:")
|
|| prefixIs(token, "LaTeX Font Info:")
|
||||||
|| prefixIs(token, "\\openout[")
|
|| prefixIs(token, "\\openout[")
|
||||||
|| prefixIs(token, "))")
|
|| prefixIs(token, "))")
|
||||||
|| regex_match(token, package_info)
|
|| regex_match(token, package_info)
|
||||||
|| regex_match(token, package_warning))
|
|| regex_match(token, package_warning))
|
||||||
lastline = string();
|
lastline = string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user