Print frames rather than boxes with demo/draft version of graphics/graphicx
\usepackage{graphicx}
\makeatletter
\AtBeginDocument{%
\def\Ginclude@graphics#1{%
\begingroup\fboxsep=-\fboxrule
\fbox{\rule{\@ifundefined{Gin@@ewidth}{150pt}{\Gin@@ewidth}}{0pt}%
\rule{0pt}{\@ifundefined{Gin@@eheight}{100pt}{\Gin@@eheight}}}\endgroup}}
\makeatother
Since the demo
option to graphicx
makes all \includegraphics
commands print a 150pt x 100pt rectangle and there's no way around that easily, you could just redefine the \includegraphics
command:
\renewcommand{\includegraphics}[2][]{%
\setlength{\fboxsep}{-\fboxrule}% Remove frame separator/gap
\framebox{\rule{0pt}{100pt}\rule{150pt}{0pt}}% Framed box of 150pt x 100pt
}
Now you can remove the demo
option from graphicx
and use the document as is with the same \framebox
-filled result. Since the command has the same format \includegraphics[..]{...}
, no further modifications are needed; all arguments (both optional and mandatory) are discarded.
Here is another way (albeit slightly overkill with \tkiz
for drawing the box, but you can adapt the other solutions for the box drawing if that is not desired -- I tend to think \tikz
first for some reason :-). The only real enhancement here from the other solutions is to use \def\DemoOption{demo}
when in demo mode and \def\DemoOption{}
when not in demo mode. This could be improved by using a command line option to set \DemoOption
.
Since the graphicx
pacakge defines \def\Ginclude@graphics
when in demo mode, we just need to redfine that after \begin{document}
:
\def\DemoOption{demo}% Use this in demo mode
%\def\DemoOption{}% Use this when done want figures included
\RequirePackage[\DemoOption]{graphicx}
\documentclass{article}
\usepackage{tikz}
\usepackage{xstring}
\begin{document}
\makeatletter%
\IfStrEq{\DemoOption}{demo}{%
\renewcommand{\Ginclude@graphics}[1]{%
\tikz \draw (0,0) rectangle (150pt,100pt);%
}}{}%
\makeatother
\includegraphics{whatever}
\end{document}