X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetInclude.cpp;h=2c0c412d04591f706e1f7018e1db6ebfb6fe9f1d;hb=9914f21bceef9610bd1822f96eff0aa6d1a8df7c;hp=324b4a07628f9ae9f6fff7c503fdebe9ce06daa2;hpb=7c17e970b1e172006fc33bb4b960ba0d9a67880b;p=lyx.git diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index 324b4a0762..2c0c412d04 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -34,6 +34,7 @@ #include "LyXRC.h" #include "Lexer.h" #include "MetricsInfo.h" +#include "output_plaintext.h" #include "output_xhtml.h" #include "OutputParams.h" #include "TextClass.h" @@ -513,15 +514,21 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const from_utf8(masterBuffer->filePath()))); } + string exppath = incfile; + if (!runparams.export_folder.empty()) { + exppath = makeAbsPath(exppath, runparams.export_folder).realPath(); + FileName(exppath).onlyPath().createPath(); + } + // write it to a file (so far the complete file) string exportfile; string mangled; // bug 5681 if (type(params()) == LISTINGS) { - exportfile = incfile; + exportfile = exppath; mangled = DocFileName(included_file).mangledFileName(); } else { - exportfile = changeExtension(incfile, ".tex"); + exportfile = changeExtension(exppath, ".tex"); mangled = DocFileName(changeExtension(included_file.absFileName(), ".tex")). mangledFileName(); } @@ -617,7 +624,9 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const runparams.master_language = buffer().params().language; runparams.par_begin = 0; runparams.par_end = tmp->paragraphs().size(); - if (!tmp->makeLaTeXFile(tmpwritefile, runparams, false)) { + runparams.is_child = true; + if (!tmp->makeLaTeXFile(tmpwritefile, masterFileName(buffer()). + onlyPath().absFileName(), runparams, Buffer::OnlyBody)) { docstring msg = bformat(_("Included file `%1$s' " "was not exported correctly.\nWarning: " "LaTeX export is probably incomplete."), @@ -631,6 +640,7 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const } runparams.encoding = oldEnc; runparams.master_language = oldLang; + runparams.is_child = false; // If needed, use converters to produce a latex file from the child if (tmpwritefile != writefile) { @@ -656,8 +666,8 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const // In this case, it's not a LyX file, so we copy the file // to the temp dir, so that .aux files etc. are not created // in the original dir. Files included by this file will be - // found via the environment variable TEXINPUTS, which may be - // set in preferences and by default includes the original dir. + // found via either the environment variable TEXINPUTS, or + // input@path, see ../Buffer.cpp. unsigned long const checksum_in = included_file.checksum(); unsigned long const checksum_out = writefile.checksum(); @@ -693,8 +703,8 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const os << '\\' << from_ascii(params().getCmdName()) << '{' << from_utf8(incfile) << '}'; } else { - incfile = changeExtension(incfile, ".tex"); - incfile = latex_path(incfile); + incfile = changeExtension(incfile, ".tex"); + incfile = latex_path(incfile); // FIXME UNICODE os << '\\' << from_ascii(params().getCmdName()) << '{' << from_utf8(incfile) << '}'; @@ -702,6 +712,8 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const break; } case LISTINGS: { + runparams.exportdata->addExternalFile(tex_format, writefile, + exportfile); os << '\\' << from_ascii(params().getCmdName()); string const opt = to_utf8(params()["lstparams"]); // opt is set in QInclude dialog and should have passed validation. @@ -784,7 +796,7 @@ docstring InsetInclude::xhtml(XHTMLStream & xs, OutputParams const & rp) const if (all_pars) { op.par_begin = 0; op.par_end = 0; - ibuf->writeLyXHTMLSource(xs.os(), op, true); + ibuf->writeLyXHTMLSource(xs.os(), op, Buffer::IncludedFile); } else xs << XHTMLStream::ESCAPE_NONE << "