lyx_mirror/src/LaTeX.h
Bo Peng 138b23fac8 Rename files in src/support, step one.
src/support/package.h                              src/support/Package.h    Package
src/support/package.C.in                           src/support/Package.C.in  Package
src/support/path.h                                 src/support/Path.h    Path
src/support/fs_extras.h                            src/support/fs_extras.h NOCLASSES
src/support/RandomAccessList.h                     src/support/RandomAccessList.h    RandomAccessList
src/support/lyxmanip.h                             src/support/lyxmanip.h NOCLASSES
src/support/rename.C                               src/support/rename.cpp  NOCLASSES
src/support/abort.C                                src/support/abort.cpp  NOCLASSES
src/support/lyxlib.h                               src/support/lyxlib.h NOCLASSES
src/support/ExceptionMessage.h                     src/support/ExceptionMessage.h    ExceptionMessage
src/support/copy.C                                 src/support/copy.cpp  NOCLASSES
src/support/limited_stack.h                        src/support/limited_stack.h    limited_stack
src/support/filefilterlist.C                       src/support/FileFilterList.cpp    ['FileFilterList', 'Filter']
src/support/cow_ptr.h                              src/support/cow_ptr.h    cow_ptr
src/support/os_unix.C                              src/support/os_unix.cpp  NOCLASSES
src/support/socktools.h                            src/support/socktools.h NOCLASSES
src/support/forkedcontr.h                          src/support/ForkedcallsController.h    ForkedcallsController
src/support/os.h                                   src/support/os.h NOCLASSES
src/support/FileMonitor.h                          src/support/FileMonitor.h    FileMonitor
src/support/copied_ptr.h                           src/support/copied_ptr.h    copied_ptr
src/support/translator.h                           src/support/Translator.h    Translator
src/support/filetools.C                            src/support/filetools.cpp  NOCLASSES
src/support/unlink.C                               src/support/unlink.cpp  NOCLASSES
src/support/os_win32.C                             src/support/os_win32.cpp    GetFolderPath
src/support/lstrings.C                             src/support/lstrings.cpp  NOCLASSES
src/support/qstring_helpers.C                      src/support/qstring_helpers.cpp  NOCLASSES
src/support/getcwd.C                               src/support/getcwd.cpp  NOCLASSES
src/support/systemcall.C                           src/support/Systemcall.cpp    Systemcall
src/support/lyxalgo.h                              src/support/lyxalgo.h NOCLASSES
src/support/filefilterlist.h                       src/support/FileFilterList.h    ['FileFilterList', 'Filter']
src/support/unicode.C                              src/support/unicode.cpp    IconvProcessor
src/support/userinfo.C                             src/support/userinfo.cpp  NOCLASSES
src/support/lyxtime.C                              src/support/lyxtime.cpp  NOCLASSES
src/support/kill.C                                 src/support/kill.cpp  NOCLASSES
src/support/docstring.C                            src/support/docstring.cpp    to_local8bit_failure
src/support/os_cygwin.C                            src/support/os_cygwin.cpp  NOCLASSES
src/support/lyxsum.C                               src/support/lyxsum.cpp  NOCLASSES
src/support/environment.C                          src/support/environment.cpp  NOCLASSES
src/support/filetools.h                            src/support/filetools.h NOCLASSES
src/support/textutils.C                            src/support/textutils.cpp  NOCLASSES
src/support/mkdir.C                                src/support/mkdir.cpp  NOCLASSES
src/support/forkedcall.C                           src/support/Forkedcall.cpp    ['ForkedProcess', 'Forkedcall']
src/support/tempname.C                             src/support/tempname.cpp  NOCLASSES
src/support/os_win32.h                             src/support/os_win32.h    GetFolderPath
src/support/types.h                                src/support/types.h NOCLASSES
src/support/lstrings.h                             src/support/lstrings.h NOCLASSES
src/support/forkedcallqueue.C                      src/support/ForkedCallQueue.cpp    ForkedCallQueue
src/support/qstring_helpers.h                      src/support/qstring_helpers.h NOCLASSES
src/support/convert.C                              src/support/convert.cpp  NOCLASSES
src/support/filename.C                             src/support/FileName.cpp    ['FileName', 'DocFileName']
src/support/tests/convert.C                        src/support/tests/convert.cpp  NOCLASSES
src/support/tests/filetools.C                      src/support/tests/filetools.cpp  NOCLASSES
src/support/tests/lstrings.C                       src/support/tests/lstrings.cpp  NOCLASSES
src/support/tests/boost.C                          src/support/tests/boost.cpp  NOCLASSES
src/support/docstream.C                            src/support/docstream.cpp    ['iconv_codecvt_facet_exception', 'idocfstream', 'odocfstream']
src/support/std_istream.h                          src/support/std_istream.h NOCLASSES
src/support/systemcall.h                           src/support/Systemcall.h    Systemcall
src/support/chdir.C                                src/support/chdir.cpp  NOCLASSES
src/support/std_ostream.h                          src/support/std_ostream.h NOCLASSES
src/support/unicode.h                              src/support/unicode.h    IconvProcessor
src/support/path.C                                 src/support/Path.cpp    Path
src/support/fs_extras.C                            src/support/fs_extras.cpp  NOCLASSES
src/support/userinfo.h                             src/support/userinfo.h NOCLASSES
src/support/lyxtime.h                              src/support/lyxtime.h NOCLASSES
src/support/docstring.h                            src/support/docstring.h    to_local8bit_failure
src/support/debugstream.h                          src/support/debugstream.h    basic_debugstream
src/support/environment.h                          src/support/environment.h NOCLASSES
src/support/textutils.h                            src/support/textutils.h NOCLASSES
src/support/forkedcall.h                           src/support/Forkedcall.h    ['ForkedProcess', 'Forkedcall']
src/support/socktools.C                            src/support/socktools.cpp  NOCLASSES
src/support/forkedcallqueue.h                      src/support/ForkedCallQueue.h    ForkedCallQueue
src/support/forkedcontr.C                          src/support/ForkedcallsController.cpp    ForkedcallsController
src/support/os.C                                   src/support/os.cpp  NOCLASSES
src/support/convert.h                              src/support/convert.h NOCLASSES
src/support/filename.h                             src/support/FileName.h    ['FileName', 'DocFileName']
src/support/docstream.h                            src/support/docstream.h    ['iconv_codecvt_facet_exception', 'idocfstream', 'odocfstream']
src/support/FileMonitor.C                          src/support/FileMonitor.cpp    FileMonitor



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18024 a592a061-630c-0410-9148-cb99ea01b6c8
2007-04-26 05:12:52 +00:00

217 lines
4.2 KiB
C++

// -*- C++ -*-
/**
* \file LaTeX.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
* \author Angus Leeming
* \author Dekel Tsur
*
* Full author contact details are available in file CREDITS.
*/
#ifndef LATEX_H
#define LATEX_H
#include "OutputParams.h"
#include "support/docstring.h"
#include "support/FileName.h"
#include <boost/utility.hpp>
#include <boost/signal.hpp>
#include <vector>
#include <set>
namespace lyx {
class DepTable;
///
class TeXErrors {
private:
///
class Error {
public:
///
Error () : error_in_line(0) {}
///
Error(int line, docstring const & desc, docstring const & text)
: error_in_line(line),
error_desc(desc),
error_text(text) {}
/// what line in the TeX file the error occured in
int error_in_line;
/// The kind of error
docstring error_desc;
/// The line/cmd that caused the error.
docstring error_text;
};
public:
///
typedef std::vector<Error> Errors;
///
Errors::const_iterator begin() const { return errors.begin(); }
///
Errors::const_iterator end() const { return errors.end(); }
///
void insertError(int line, docstring const & error_desc,
docstring const & error_text);
private:
///
Errors errors;
};
class Aux_Info {
public:
///
Aux_Info() {}
///
support::FileName aux_file;
///
std::set<std::string> citations;
///
std::set<std::string> databases;
///
std::set<std::string> styles;
};
///
bool operator==(Aux_Info const &, Aux_Info const &);
bool operator!=(Aux_Info const &, Aux_Info const &);
/**
* Class to run the LaTeX compiler and needed auxiliary programs.
* The main .tex file must be in the current directory. The current directory
* must not change as long as an object of this class lives.
* This is required by the LaTeX compiler, and we also make use of it by
* various support::makeAbsPath() calls.
*/
class LaTeX : boost::noncopyable {
public:
/** Return values from scanLogFile() and run() (to come)
This enum should be enlarged a bit so that one could
get more feedback from the LaTeX run.
*/
enum log_status {
///
NO_ERRORS = 0,
///
NO_LOGFILE = 1,
///
NO_OUTPUT = 2,
///
UNDEF_REF = 4, // Reference '...' on page ... undefined.
///
UNDEF_CIT = 8, // Citation '...' on page ... undefined.
///
RERUN = 16, // Label(s) may have changed. Rerun to get...
///
TEX_ERROR = 32,
///
TEX_WARNING = 64,
///
LATEX_ERROR = 128,
///
LATEX_WARNING = 256,
///
PACKAGE_WARNING = 512,
///
NO_FILE = 1024,
///
NO_CHANGE = 2048,
///
TOO_MANY_ERRORS = 4096,
///
ERROR_RERUN = 8192,
///
ERRORS = TEX_ERROR + LATEX_ERROR,
///
WARNINGS = TEX_WARNING + LATEX_WARNING + PACKAGE_WARNING
};
/// This signal emits an informative message
boost::signal<void(docstring)> message;
/**
cmd = the latex command, file = name of the (temporary) latex file,
path = name of the files original path.
*/
LaTeX(std::string const & cmd, OutputParams const &,
support::FileName const & file);
/// runs LaTeX several times
int run(TeXErrors &);
///
int getNumErrors() { return num_errors;}
///
int scanLogFile(TeXErrors &);
private:
/// use this for running LaTeX once
int startscript();
/// The dependency file.
support::FileName depfile;
///
void deplog(DepTable & head);
///
bool runMakeIndex(std::string const &, OutputParams const &,
std::string const & = std::string());
///
bool runMakeIndexNomencl(support::FileName const &, OutputParams const &,
std::string const &, std::string const &);
///
std::vector<Aux_Info> const scanAuxFiles(support::FileName const &);
///
Aux_Info const scanAuxFile(support::FileName const &);
///
void scanAuxFile(support::FileName const &, Aux_Info &);
///
void updateBibtexDependencies(DepTable &,
std::vector<Aux_Info> const &);
///
bool runBibTeX(std::vector<Aux_Info> const &);
///
void deleteFilesOnError() const;
///
std::string cmd;
///
support::FileName file;
/// used by scanLogFile
int num_errors;
/// The name of the final output file.
support::FileName output_file;
///
OutputParams runparams;
};
} // namespace lyx
#endif