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");
}
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;
? 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);
+ cs << pconverter_->command
+ << " " << quoteName(latexfile.toFilesystemEncoding())
+ << " --dpi " << int(font_scaling_factor)
+ << " --fg " << theApp()->hexName(fg)
+ << " --bg " << theApp()->hexName(bg);
// FIXME what about LuaTeX?
- if (buffer_.bufferFormat() == "xetex")
- cs << " xelatex";
+ if (buffer_.params().useNonTeXFonts)
+ 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++;
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) {
{
// 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);
+ 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:
// 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";
}