mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-10 20:04:46 +00:00
makeLaTeXFile has two variants that can be passed either a file name or an
ostream &. Also passed an additional only_preamble parameter. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4537 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
ad68c67160
commit
e5185674de
@ -1,3 +1,10 @@
|
||||
2002-07-05 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* buffer.[Ch] (makeLaTeXFile): create two methods where there was one.
|
||||
The body of the code is now in the method that is passed an ostream &
|
||||
rather than a file name.
|
||||
Pass an additional only_preamble parameter, useful for the forthcoming
|
||||
preview stuff.
|
||||
|
||||
2002-07-03 André Pönitz <poenitz@gmx.net>
|
||||
|
||||
|
147
src/buffer.C
147
src/buffer.C
@ -2165,7 +2165,7 @@ bool use_babel;
|
||||
|
||||
void Buffer::makeLaTeXFile(string const & fname,
|
||||
string const & original_path,
|
||||
bool nice, bool only_body)
|
||||
bool nice, bool only_body, bool only_preamble)
|
||||
{
|
||||
lyxerr[Debug::LATEX] << "makeLaTeXFile..." << endl;
|
||||
|
||||
@ -2175,6 +2175,19 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
return;
|
||||
}
|
||||
|
||||
makeLaTeXFile(ofs, original_path, nice, only_body, only_preamble);
|
||||
|
||||
ofs.close();
|
||||
if (ofs.fail()) {
|
||||
lyxerr << "File was not closed properly." << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Buffer::makeLaTeXFile(ostream & os,
|
||||
string const & original_path,
|
||||
bool nice, bool only_body, bool only_preamble)
|
||||
{
|
||||
niceFile = nice; // this will be used by Insetincludes.
|
||||
|
||||
tex_code_break_column = lyxrc.ascii_linelen;
|
||||
@ -2191,7 +2204,7 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
texrow.start(paragraph, 0);
|
||||
|
||||
if (!only_body && nice) {
|
||||
ofs << "%% " << lyx_docversion << " created this file. "
|
||||
os << "%% " << lyx_docversion << " created this file. "
|
||||
"For more info, see http://www.lyx.org/.\n"
|
||||
"%% Do not edit unless you really know what "
|
||||
"you are doing.\n";
|
||||
@ -2211,14 +2224,14 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
if (!only_body) {
|
||||
if (!nice) {
|
||||
// code for usual, NOT nice-latex-file
|
||||
ofs << "\\batchmode\n"; // changed
|
||||
os << "\\batchmode\n"; // changed
|
||||
// from \nonstopmode
|
||||
texrow.newline();
|
||||
}
|
||||
if (!original_path.empty()) {
|
||||
string inputpath = os::external_path(original_path);
|
||||
subst(inputpath, "~", "\\string~");
|
||||
ofs << "\\makeatletter\n"
|
||||
os << "\\makeatletter\n"
|
||||
<< "\\def\\input@path{{"
|
||||
<< inputpath << "/}}\n"
|
||||
<< "\\makeatother\n";
|
||||
@ -2227,7 +2240,7 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
ofs << "\\documentclass";
|
||||
os << "\\documentclass";
|
||||
|
||||
LyXTextClass const & tclass = textclasslist[params.textclass];
|
||||
|
||||
@ -2314,10 +2327,10 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
string strOptions(options.str().c_str());
|
||||
if (!strOptions.empty()) {
|
||||
strOptions = strip(strOptions, ',');
|
||||
ofs << '[' << strOptions << ']';
|
||||
os << '[' << strOptions << ']';
|
||||
}
|
||||
|
||||
ofs << '{' << tclass.latexname() << "}\n";
|
||||
os << '{' << tclass.latexname() << "}\n";
|
||||
texrow.newline();
|
||||
// end of \documentclass defs
|
||||
|
||||
@ -2325,16 +2338,16 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
// The ae package is not needed when using OT1 font encoding.
|
||||
if (params.fonts != "default" &&
|
||||
(params.fonts != "ae" || lyxrc.fontenc != "default")) {
|
||||
ofs << "\\usepackage{" << params.fonts << "}\n";
|
||||
os << "\\usepackage{" << params.fonts << "}\n";
|
||||
texrow.newline();
|
||||
if (params.fonts == "ae") {
|
||||
ofs << "\\usepackage{aecompl}\n";
|
||||
os << "\\usepackage{aecompl}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
}
|
||||
// this one is not per buffer
|
||||
if (lyxrc.fontenc != "default") {
|
||||
ofs << "\\usepackage[" << lyxrc.fontenc
|
||||
os << "\\usepackage[" << lyxrc.fontenc
|
||||
<< "]{fontenc}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
@ -2347,13 +2360,13 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
// in the document
|
||||
set<string> encodings = features.getEncodingSet(doc_encoding);
|
||||
|
||||
ofs << "\\usepackage[";
|
||||
os << "\\usepackage[";
|
||||
std::copy(encodings.begin(), encodings.end(),
|
||||
std::ostream_iterator<string>(ofs, ","));
|
||||
ofs << doc_encoding << "]{inputenc}\n";
|
||||
std::ostream_iterator<string>(os, ","));
|
||||
os << doc_encoding << "]{inputenc}\n";
|
||||
texrow.newline();
|
||||
} else if (params.inputenc != "default") {
|
||||
ofs << "\\usepackage[" << params.inputenc
|
||||
os << "\\usepackage[" << params.inputenc
|
||||
<< "]{inputenc}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
@ -2362,124 +2375,124 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
if (params.paperpackage != BufferParams::PACKAGE_NONE) {
|
||||
switch (params.paperpackage) {
|
||||
case BufferParams::PACKAGE_A4:
|
||||
ofs << "\\usepackage{a4}\n";
|
||||
os << "\\usepackage{a4}\n";
|
||||
texrow.newline();
|
||||
break;
|
||||
case BufferParams::PACKAGE_A4WIDE:
|
||||
ofs << "\\usepackage{a4wide}\n";
|
||||
os << "\\usepackage{a4wide}\n";
|
||||
texrow.newline();
|
||||
break;
|
||||
case BufferParams::PACKAGE_WIDEMARGINSA4:
|
||||
ofs << "\\usepackage[widemargins]{a4}\n";
|
||||
os << "\\usepackage[widemargins]{a4}\n";
|
||||
texrow.newline();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (params.use_geometry) {
|
||||
ofs << "\\usepackage{geometry}\n";
|
||||
os << "\\usepackage{geometry}\n";
|
||||
texrow.newline();
|
||||
ofs << "\\geometry{verbose";
|
||||
os << "\\geometry{verbose";
|
||||
if (params.orientation == BufferParams::ORIENTATION_LANDSCAPE)
|
||||
ofs << ",landscape";
|
||||
os << ",landscape";
|
||||
switch (params.papersize2) {
|
||||
case BufferParams::VM_PAPER_CUSTOM:
|
||||
if (!params.paperwidth.empty())
|
||||
ofs << ",paperwidth="
|
||||
os << ",paperwidth="
|
||||
<< params.paperwidth;
|
||||
if (!params.paperheight.empty())
|
||||
ofs << ",paperheight="
|
||||
os << ",paperheight="
|
||||
<< params.paperheight;
|
||||
break;
|
||||
case BufferParams::VM_PAPER_USLETTER:
|
||||
ofs << ",letterpaper";
|
||||
os << ",letterpaper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_USLEGAL:
|
||||
ofs << ",legalpaper";
|
||||
os << ",legalpaper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_USEXECUTIVE:
|
||||
ofs << ",executivepaper";
|
||||
os << ",executivepaper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_A3:
|
||||
ofs << ",a3paper";
|
||||
os << ",a3paper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_A4:
|
||||
ofs << ",a4paper";
|
||||
os << ",a4paper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_A5:
|
||||
ofs << ",a5paper";
|
||||
os << ",a5paper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_B3:
|
||||
ofs << ",b3paper";
|
||||
os << ",b3paper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_B4:
|
||||
ofs << ",b4paper";
|
||||
os << ",b4paper";
|
||||
break;
|
||||
case BufferParams::VM_PAPER_B5:
|
||||
ofs << ",b5paper";
|
||||
os << ",b5paper";
|
||||
break;
|
||||
default:
|
||||
// default papersize ie BufferParams::VM_PAPER_DEFAULT
|
||||
switch (lyxrc.default_papersize) {
|
||||
case BufferParams::PAPER_DEFAULT: // keep compiler happy
|
||||
case BufferParams::PAPER_USLETTER:
|
||||
ofs << ",letterpaper";
|
||||
os << ",letterpaper";
|
||||
break;
|
||||
case BufferParams::PAPER_LEGALPAPER:
|
||||
ofs << ",legalpaper";
|
||||
os << ",legalpaper";
|
||||
break;
|
||||
case BufferParams::PAPER_EXECUTIVEPAPER:
|
||||
ofs << ",executivepaper";
|
||||
os << ",executivepaper";
|
||||
break;
|
||||
case BufferParams::PAPER_A3PAPER:
|
||||
ofs << ",a3paper";
|
||||
os << ",a3paper";
|
||||
break;
|
||||
case BufferParams::PAPER_A4PAPER:
|
||||
ofs << ",a4paper";
|
||||
os << ",a4paper";
|
||||
break;
|
||||
case BufferParams::PAPER_A5PAPER:
|
||||
ofs << ",a5paper";
|
||||
os << ",a5paper";
|
||||
break;
|
||||
case BufferParams::PAPER_B5PAPER:
|
||||
ofs << ",b5paper";
|
||||
os << ",b5paper";
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!params.topmargin.empty())
|
||||
ofs << ",tmargin=" << params.topmargin;
|
||||
os << ",tmargin=" << params.topmargin;
|
||||
if (!params.bottommargin.empty())
|
||||
ofs << ",bmargin=" << params.bottommargin;
|
||||
os << ",bmargin=" << params.bottommargin;
|
||||
if (!params.leftmargin.empty())
|
||||
ofs << ",lmargin=" << params.leftmargin;
|
||||
os << ",lmargin=" << params.leftmargin;
|
||||
if (!params.rightmargin.empty())
|
||||
ofs << ",rmargin=" << params.rightmargin;
|
||||
os << ",rmargin=" << params.rightmargin;
|
||||
if (!params.headheight.empty())
|
||||
ofs << ",headheight=" << params.headheight;
|
||||
os << ",headheight=" << params.headheight;
|
||||
if (!params.headsep.empty())
|
||||
ofs << ",headsep=" << params.headsep;
|
||||
os << ",headsep=" << params.headsep;
|
||||
if (!params.footskip.empty())
|
||||
ofs << ",footskip=" << params.footskip;
|
||||
ofs << "}\n";
|
||||
os << ",footskip=" << params.footskip;
|
||||
os << "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (tokenPos(tclass.opt_pagestyle(),
|
||||
'|', params.pagestyle) >= 0) {
|
||||
if (params.pagestyle == "fancy") {
|
||||
ofs << "\\usepackage{fancyhdr}\n";
|
||||
os << "\\usepackage{fancyhdr}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
ofs << "\\pagestyle{" << params.pagestyle << "}\n";
|
||||
os << "\\pagestyle{" << params.pagestyle << "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (params.secnumdepth != tclass.secnumdepth()) {
|
||||
ofs << "\\setcounter{secnumdepth}{"
|
||||
os << "\\setcounter{secnumdepth}{"
|
||||
<< params.secnumdepth
|
||||
<< "}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
if (params.tocdepth != tclass.tocdepth()) {
|
||||
ofs << "\\setcounter{tocdepth}{"
|
||||
os << "\\setcounter{tocdepth}{"
|
||||
<< params.tocdepth
|
||||
<< "}\n";
|
||||
texrow.newline();
|
||||
@ -2488,26 +2501,26 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
if (params.paragraph_separation) {
|
||||
switch (params.defskip.kind()) {
|
||||
case VSpace::SMALLSKIP:
|
||||
ofs << "\\setlength\\parskip{\\smallskipamount}\n";
|
||||
os << "\\setlength\\parskip{\\smallskipamount}\n";
|
||||
break;
|
||||
case VSpace::MEDSKIP:
|
||||
ofs << "\\setlength\\parskip{\\medskipamount}\n";
|
||||
os << "\\setlength\\parskip{\\medskipamount}\n";
|
||||
break;
|
||||
case VSpace::BIGSKIP:
|
||||
ofs << "\\setlength\\parskip{\\bigskipamount}\n";
|
||||
os << "\\setlength\\parskip{\\bigskipamount}\n";
|
||||
break;
|
||||
case VSpace::LENGTH:
|
||||
ofs << "\\setlength\\parskip{"
|
||||
os << "\\setlength\\parskip{"
|
||||
<< params.defskip.length().asLatexString()
|
||||
<< "}\n";
|
||||
break;
|
||||
default: // should never happen // Then delete it.
|
||||
ofs << "\\setlength\\parskip{\\medskipamount}\n";
|
||||
os << "\\setlength\\parskip{\\medskipamount}\n";
|
||||
break;
|
||||
}
|
||||
texrow.newline();
|
||||
|
||||
ofs << "\\setlength\\parindent{0pt}\n";
|
||||
os << "\\setlength\\parindent{0pt}\n";
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
@ -2599,36 +2612,39 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
|
||||
preamble += "\\makeatother\n";
|
||||
|
||||
ofs << preamble;
|
||||
os << preamble;
|
||||
|
||||
if (only_preamble)
|
||||
return;
|
||||
|
||||
// make the body.
|
||||
ofs << "\\begin{document}\n";
|
||||
os << "\\begin{document}\n";
|
||||
texrow.newline();
|
||||
} // only_body
|
||||
lyxerr[Debug::INFO] << "preamble finished, now the body." << endl;
|
||||
|
||||
if (!lyxrc.language_auto_begin) {
|
||||
ofs << subst(lyxrc.language_command_begin, "$$lang",
|
||||
os << subst(lyxrc.language_command_begin, "$$lang",
|
||||
params.language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
latexParagraphs(ofs, paragraph, 0, texrow);
|
||||
latexParagraphs(os, paragraph, 0, texrow);
|
||||
|
||||
// add this just in case after all the paragraphs
|
||||
ofs << endl;
|
||||
os << endl;
|
||||
texrow.newline();
|
||||
|
||||
if (!lyxrc.language_auto_end) {
|
||||
ofs << subst(lyxrc.language_command_end, "$$lang",
|
||||
os << subst(lyxrc.language_command_end, "$$lang",
|
||||
params.language->babel())
|
||||
<< endl;
|
||||
texrow.newline();
|
||||
}
|
||||
|
||||
if (!only_body) {
|
||||
ofs << "\\end{document}\n";
|
||||
os << "\\end{document}\n";
|
||||
texrow.newline();
|
||||
|
||||
lyxerr[Debug::LATEX] << "makeLaTeXFile...done" << endl;
|
||||
@ -2646,11 +2662,6 @@ void Buffer::makeLaTeXFile(string const & fname,
|
||||
// value when we leave otherwise we save incorrect .lyx files.
|
||||
tex_code_break_column = lyxrc.ascii_linelen;
|
||||
|
||||
ofs.close();
|
||||
if (ofs.fail()) {
|
||||
lyxerr << "File was not closed properly." << endl;
|
||||
}
|
||||
|
||||
lyxerr[Debug::INFO] << "Finished making latex file." << endl;
|
||||
lyxerr[Debug::INFO] << "Row count was " << texrow.rows()-1 << "." << endl;
|
||||
|
||||
|
12
src/buffer.h
12
src/buffer.h
@ -157,10 +157,18 @@ public:
|
||||
///
|
||||
string const asciiParagraph(Paragraph const *, unsigned int linelen,
|
||||
bool noparbreak = false) const;
|
||||
///
|
||||
/// Just a wrapper for the method below, first creating the ofstream.
|
||||
void makeLaTeXFile(string const & filename,
|
||||
string const & original_path,
|
||||
bool nice, bool only_body = false);
|
||||
bool nice,
|
||||
bool only_body = false,
|
||||
bool only_preamble = false);
|
||||
///
|
||||
void makeLaTeXFile(std::ostream & os,
|
||||
string const & original_path,
|
||||
bool nice,
|
||||
bool only_body = false,
|
||||
bool only_preamble = false);
|
||||
/** LaTeX all paragraphs from par to endpar.
|
||||
\param \a endpar if == 0 then to the end
|
||||
*/
|
||||
|
@ -1,3 +1,7 @@
|
||||
2002-07-05 Angus Leeming <leeming@lyx.org>
|
||||
|
||||
* GraphicsLoader.h: whitespace.
|
||||
|
||||
2002-07-04 Lars Gullik Bjønnes <larsbj@birdstep.com>
|
||||
|
||||
* GraphicsImage.[Ch]: newImage and loadableFormats changed to
|
||||
|
@ -63,7 +63,7 @@ public:
|
||||
/// We are explicit about when we begin the loading process.
|
||||
void startLoading();
|
||||
|
||||
/// How far have we got in loading the image?
|
||||
/// How far have we got in loading the image?
|
||||
ImageStatus status() const;
|
||||
|
||||
/// This signal is emitted when the image loading status changes.
|
||||
|
Loading…
Reference in New Issue
Block a user