commit aaf17b08a8515650fa0c2253df060b0becad677c
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Thu Oct 12 15:38:59 2017 +0200

    Fix PDF output of clipped graphics with recent graphics package
    
    The previous redirection of the senseless option "bb" to "viewport" in
    PDFLaTeX output has been removed in a recent graphics package update.
    
    This breaks documents, since clipped graphics silently stop displaying.
    
    This change restores the previous output by using "viewport" instaed of
    "bb" for non-PS/DVI output, while leaving PS/DVI untouched (where "bb"
    and "viewport" behave differently.
    
    Fixes: #7910
---
 src/insets/InsetGraphics.cpp |   12 ++++++++----
 src/insets/InsetGraphics.h   |    2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp
index 3cc550b..94182a7 100644
--- a/src/insets/InsetGraphics.cpp
+++ b/src/insets/InsetGraphics.cpp
@@ -304,17 +304,19 @@ void InsetGraphics::read(Lexer & lex)
 }
 
 
-string InsetGraphics::createLatexOptions() const
+string InsetGraphics::createLatexOptions(bool const ps) const
 {
        // Calculate the options part of the command, we must do it to a string
        // stream since we might have a trailing comma that we would like to 
remove
        // before writing it to the output stream.
        ostringstream options;
-       if (!params().bbox.empty())
-               options << "bb=" << params().bbox.xl.asLatexString() << ' '
+       if (!params().bbox.empty()) {
+               string const key = ps ? "bb=" : "viewport=";
+               options << key << params().bbox.xl.asLatexString() << ' '
                        << params().bbox.yb.asLatexString() << ' '
                        << params().bbox.xr.asLatexString() << ' '
                        << params().bbox.yt.asLatexString() << ',';
+       }
        if (params().draft)
            options << "draft,";
        if (params().clip)
@@ -765,7 +767,9 @@ void InsetGraphics::latex(otexstream & os,
        before += "\\includegraphics";
 
        // Write the options if there are any.
-       string const opts = createLatexOptions();
+       bool const ps = runparams.flavor == OutputParams::LATEX
+               || runparams.flavor == OutputParams::DVILUATEX;
+       string const opts = createLatexOptions(ps);
        LYXERR(Debug::GRAPHICS, "\tOpts = " << opts);
 
        if (!opts.empty() && !message.empty())
diff --git a/src/insets/InsetGraphics.h b/src/insets/InsetGraphics.h
index 5bd858a..58b28ab 100644
--- a/src/insets/InsetGraphics.h
+++ b/src/insets/InsetGraphics.h
@@ -114,7 +114,7 @@ private:
        /// Get the status message, depends on the image loading status.
        std::string statusMessage() const;
        /// Create the options for the latex command.
-       std::string createLatexOptions() const;
+       std::string createLatexOptions(bool const ps) const;
        /// Create length values for docbook export.
        docstring toDocbookLength(Length const & len) const;
        /// Create the atributes for docbook export.

Reply via email to