]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/PreviewLoader.cpp
de.po: fix doubled accelerator keys
[lyx.git] / src / graphics / PreviewLoader.cpp
index a10b2c9f8dc5b6c11e284acad0cd5900f4af4e30..514b6253d35facb1efdf88a337ad7e1c2b3a2aa3 100644 (file)
@@ -32,6 +32,7 @@
 
 #include "support/convert.h"
 #include "support/debug.h"
+#include "support/FileName.h"
 #include "support/filetools.h"
 #include "support/ForkedCalls.h"
 #include "support/lstrings.h"
@@ -72,7 +73,7 @@ lyx::Converter const * setConverter()
 
        typedef vector<string> FmtList;
        typedef lyx::graphics::Cache GCache;
-       FmtList const loadableFormats = GCache::get().loadableFormats();
+       FmtList const loadableFormats = GCache::get().loadableFormats();
        FmtList::const_iterator it = loadableFormats.begin();
        FmtList::const_iterator const end = loadableFormats.end();
 
@@ -353,7 +354,7 @@ InProgress::InProgress(string const & filename_base,
                       PendingSnippets const & pending,
                       string const & to_format)
        : pid(0),
-         metrics_file(FileName(filename_base + ".metrics")),
+         metrics_file(filename_base + ".metrics"),
          snippets(pending.size())
 {
        PendingSnippets::const_iterator pit  = pending.begin();
@@ -553,7 +554,14 @@ void PreviewLoader::Impl::startLoading()
 
        // we use the encoding of the buffer
        Encoding const & enc = buffer_.params().encoding();
-       odocfstream of(enc.iconvName());
+       odocfstream of;
+       try { of.reset(enc.iconvName()); }
+       catch (iconv_codecvt_facet_exception & e) {
+               LYXERR0("Caught iconv exception: " << e.what()
+                       << "\nUnable to create LaTeX file: " << latexfile);
+               return;
+       }
+
        TexRow texrow;
        OutputParams runparams(&enc);
        LaTeXFeatures features(buffer_, buffer_.params(), runparams);
@@ -700,7 +708,7 @@ void PreviewLoader::Impl::dumpPreamble(odocstream & os) const
 
        for (; it != end; ++it)
                if (it->lyxCode() == MATHMACRO_CODE)
-                       it->latex(buffer_, os, runparams);
+                       it->latex(os, runparams);
 
        // All equation labels appear as "(#)" + preview.sty's rendering of
        // the label name
@@ -709,8 +717,19 @@ void PreviewLoader::Impl::dumpPreamble(odocstream & os) const
 
        // Use the preview style file to ensure that each snippet appears on a
        // fresh page.
+       // Also support PDF output (automatically generated e.g. when
+       // \usepackage[pdftex]{hyperref} is used.
        os << "\n"
-          << "\\usepackage[active,delayed,dvips,showlabels,lyx]{preview}\n"
+          << "\\newif\\ifpdf\n"
+          << "\\ifx\\pdfoutput\\undefined\n"
+          << "\\else\\ifx\\pdfoutput\\relax\n"
+          << "\\else\\ifnum0=\\pdfoutput\n"
+          << "\\else\\pdftrue\\fi\\fi\\fi\n"
+          << "\\ifpdf\n"
+          << "  \\usepackage[active,delayed,tightpage,showlabels,lyx,pdftex]{preview}\n"
+          << "\\else\n"
+          << "  \\usepackage[active,delayed,showlabels,lyx,dvips]{preview}\n"
+          << "\\fi\n"
           << "\n";
 }