[LyX/master] Do not output eps bounding box for unknown/missing graphics (#8899)

Juergen Spitzmueller spitz at lyx.org
Sat Feb 26 14:50:15 UTC 2022


commit 8a0715d0bdc38df6c8b26d79e84c68409058a116
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sat Feb 26 16:23:27 2022 +0100

    Do not output eps bounding box for unknown/missing graphics (#8899)
    
    Except for dvi/ps output chain for which this trick was meant.
    Also, issue an error message in this case. This is analogous to
    the other output flavors now.
---
 src/insets/InsetGraphics.cpp |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/insets/InsetGraphics.cpp b/src/insets/InsetGraphics.cpp
index ef03b6f..91c23aa 100644
--- a/src/insets/InsetGraphics.cpp
+++ b/src/insets/InsetGraphics.cpp
@@ -61,6 +61,7 @@ TODO
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "InsetIterator.h"
+#include "LaTeX.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "MetricsInfo.h"
@@ -821,7 +822,19 @@ void InsetGraphics::latex(otexstream & os,
 	bool const file_exists = !params().filename.empty()
 			&& params().filename.isReadableFile();
 	string message;
-	if (!file_exists) {
+	// PDFLaTeX and Xe/LuaTeX fall back to draft themselves
+	// and error about it. For DVI/PS, we do something similar here.
+	if (!file_exists && runparams.flavor == Flavor::LaTeX) {
+		TeXErrors terr;
+		ErrorList & errorList = buffer().errorList("Export");
+		docstring const s = params().filename.empty() ?
+					_("Graphic not specified. Falling back to `draft' mode.")
+				      : bformat(_("Graphic `%1$s' was not found. Falling back to `draft' mode."),
+						params().filename.absoluteFilePath());
+		Paragraph const & par = buffer().paragraphs().front();
+		errorList.push_back(ErrorItem(_("Graphic not found!"), s,
+					      {par.id(), 0}, {par.id(), -1}));
+		buffer().bufferErrors(terr, errorList);
 		if (params().bbox.empty())
 		    message = "bb = 0 0 200 100";
 		if (!params().draft) {
@@ -832,11 +845,11 @@ void InsetGraphics::latex(otexstream & os,
 		if (!message.empty())
 			message += ", ";
 		message += "type=eps";
+		// If no existing file "filename" was found LaTeX
+		// draws only a rectangle with the above bb and the
+		// not found filename in it.
+		LYXERR(Debug::GRAPHICS, "\tMessage = \"" << message << '\"');
 	}
-	// If no existing file "filename" was found LaTeX
-	// draws only a rectangle with the above bb and the
-	// not found filename in it.
-	LYXERR(Debug::GRAPHICS, "\tMessage = \"" << message << '\"');
 
 	// These variables collect all the latex code that should be before and
 	// after the actual includegraphics command.


More information about the lyx-cvs mailing list