commit cd626c24118b30ec8c2297222e39358047731369
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 +-
 status.22x                   |    2 ++
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp
index 9220362..62740f2 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 5270f2b..dae9602 100644
--- a/src/insets/InsetGraphics.h
+++ b/src/insets/InsetGraphics.h
@@ -112,7 +112,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.
diff --git a/status.22x b/status.22x
index 91a8a3e..25416e1 100644
--- a/status.22x
+++ b/status.22x
@@ -49,6 +49,8 @@ What's new
 
 - Catch "! Incomplete \if[x]" LaTeX error (bug 10666).
 
+- Fix PDF output of clipped graphics with recent graphics package (bug 7910).
+
 - Catch xdvipdfmx driver error that breaks XeTeX compilation (bug 10076).
 
 - Fix caption handling in listings insets when it is split into multiple

Reply via email to