X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fgraphics%2FPreviewLoader.cpp;h=b4d78e0ab5b68503d21445c7a2b652ecda124d90;hb=99c5a46c68bd605c03d4e3a86811831ed7dd3d37;hp=5d468b9e955ba5c421de02b574c8953c824f5519;hpb=efe93782fedc9b7a8356a9e3c99013322f712ded;p=lyx.git diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp index 5d468b9e95..b4d78e0ab5 100644 --- a/src/graphics/PreviewLoader.cpp +++ b/src/graphics/PreviewLoader.cpp @@ -24,7 +24,6 @@ #include "LyXRC.h" #include "output.h" #include "OutputParams.h" -#include "PDFOptions.h" #include "TexRow.h" #include "frontends/Application.h" // hexName @@ -389,11 +388,7 @@ namespace graphics { PreviewLoader::Impl::Impl(PreviewLoader & p, Buffer const & b) : parent_(p), buffer_(b) { - if (b.bufferFormat() == "lilypond-book") - pconverter_ = setConverter("lyxpreview-lytex"); - else if (b.params().encoding().package() == Encoding::japanese) - pconverter_ = setConverter("lyxpreview-platex"); - else + if (!pconverter_) pconverter_ = setConverter("lyxpreview"); } @@ -552,7 +547,7 @@ void PreviewLoader::Impl::startLoading(bool wait) Encoding const & enc = buffer_.params().encoding(); ofdocstream of; try { of.reset(enc.iconvName()); } - catch (iconv_codecvt_facet_exception & e) { + catch (iconv_codecvt_facet_exception const & e) { LYXERR0("Caught iconv exception: " << e.what() << "\nUnable to create LaTeX file: " << latexfile); return; @@ -588,32 +583,40 @@ void PreviewLoader::Impl::startLoading(bool wait) double const font_scaling_factor = buffer_.isExporting() ? 75.0 * buffer_.params().html_math_img_scale : 0.01 * lyxrc.dpi * lyxrc.zoom * lyxrc.preview_scale_factor; + + // The conversion command. + ostringstream cs; + cs << pconverter_->command + << " " << quoteName(latexfile.toFilesystemEncoding()) + << " --dpi " << int(font_scaling_factor); // FIXME XHTML // The colors should be customizable. - ColorCode const bg = buffer_.isExporting() - ? Color_white : PreviewLoader::backgroundColor(); - ColorCode const fg = buffer_.isExporting() - ? Color_black : PreviewLoader::foregroundColor(); - // The conversion command. - ostringstream cs; - cs << pconverter_->command << ' ' << pconverter_->to << ' ' - << quoteName(latexfile.toFilesystemEncoding()) << ' ' - << int(font_scaling_factor) << ' ' - << theApp()->hexName(fg) << ' ' - << theApp()->hexName(bg); + if (!buffer_.isExporting()) { + ColorCode const fg = PreviewLoader::foregroundColor(); + ColorCode const bg = PreviewLoader::backgroundColor(); + cs << " --fg " << theApp()->hexName(fg) + << " --bg " << theApp()->hexName(bg); + } + // FIXME what about LuaTeX? if (buffer_.params().useNonTeXFonts) - cs << " xelatex"; - // DVI output fails sometimes with hyperref - // (probably a preview-latex/hyperref bug) - else if (buffer_.params().pdfoptions().use_hyperref) - cs << " pdflatex"; + cs << " --latex=xelatex"; + if (buffer_.params().encoding().package() == Encoding::japanese) + cs << " --latex=platex"; + if (buffer_.params().bibtex_command != "default") + cs << " --bibtex=" << quoteName(buffer_.params().bibtex_command); + else if (buffer_.params().encoding().package() == Encoding::japanese) + cs << " --bibtex=" << quoteName(lyxrc.jbibtex_command); + else + cs << " --bibtex=" << quoteName(lyxrc.bibtex_command); + if (buffer_.params().bufferFormat() == "lilypond-book") + cs << " --lilypond"; string const command = libScriptSearch(cs.str()); if (wait) { - ForkedCall call; + ForkedCall call(buffer_.filePath()); int ret = call.startScript(ForkedProcess::Wait, command); static int fake = (2^20) + 1; int pid = fake++; @@ -629,7 +632,7 @@ void PreviewLoader::Impl::startLoading(bool wait) convert_ptr(new ForkedCall::SignalType); convert_ptr->connect(bind(&Impl::finishedGenerating, this, _1, _2)); - ForkedCall call; + ForkedCall call(buffer_.filePath()); int ret = call.startScript(command, convert_ptr); if (ret != 0) { @@ -708,11 +711,15 @@ void PreviewLoader::Impl::dumpPreamble(otexstream & os) const { // Dump the preamble only. OutputParams runparams(&buffer_.params().encoding()); - runparams.flavor = OutputParams::LATEX; + if (buffer_.params().useNonTeXFonts) + runparams.flavor = OutputParams::XETEX; + else + runparams.flavor = OutputParams::LATEX; runparams.nice = true; runparams.moving_arg = true; runparams.free_spacing = true; - buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, true, false); + runparams.is_child = buffer_.parent(); + buffer_.writeLaTeXSource(os, buffer_.filePath(), runparams, Buffer::OnlyPreamble); // FIXME! This is a HACK! The proper fix is to control the 'true' // passed to WriteStream below: @@ -737,26 +744,7 @@ void PreviewLoader::Impl::dumpPreamble(otexstream & os) const // Also support PDF output (automatically generated e.g. when // \usepackage[pdftex]{hyperref} is used and XeTeX. os << "\n" - << "\\newif\\ifxetex\n" - << "\\expandafter\\ifx\\csname XeTeXrevision\\endcsname\\relax\n" - << " \\xetexfalse\n" - << "\\else\n" - << " \\xetextrue\n" - << "\\fi\n" - << "\\newif\\ifpdf\n" - << "\\ifx\\pdfoutput\\undefined\n" - << "\\else\\ifx\\pdfoutput\\relax\n" - << "\\else\\ifnum0=\\pdfoutput\n" - << "\\else\\pdftrue\\fi\\fi\\fi\n" - << "\\ifxetex\n" - << " \\usepackage[active,delayed,tightpage,showlabels,lyx,xetex]{preview}\n" - << "\\else\n" - << "\\ifpdf\n" - << " \\usepackage[active,delayed,tightpage,showlabels,lyx,pdftex]{preview}\n" - << "\\else\n" - << " \\usepackage[active,delayed,showlabels,lyx,dvips]{preview}\n" - << "\\fi\n" - << "\\fi\n" + << "\\usepackage[active,delayed,showlabels,lyx]{preview}\n" << "\n"; }