Use \setkeys{Gin}{} to set appropriate defaults for \includegraphics, instead of entirely redefining this command.
Note we also consider the height of images; if an image is too high, 0.8\textheight will be used for beamer slides, and \textheight is used for articles (see http://tex.stackexchange.com/q/11954/9128). If the user has explicitly provided the width/height options in \includegraphics[], our defaults will be overwritten, and this approach is better than the check `\@ifnextchar[` after \includegraphics because the latter approach simply gives up everything once it sees [, whereas \setkeys{Gin} can keep the good defaults unless they are explicitly overwritten in []. closes #30, closes #28, and closes #26
This commit is contained in:
parent
2afb0792ba
commit
a3cce8d359
2 changed files with 11 additions and 22 deletions
|
@ -69,16 +69,15 @@ $if(url)$
|
|||
\usepackage{url}
|
||||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{letltxmacro}
|
||||
\usepackage{graphicx}
|
||||
\makeatletter
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight0.8\textheight\else\Gin@nat@height\fi}
|
||||
\makeatother
|
||||
\AtBeginDocument{
|
||||
\LetLtxMacro\Oldincludegraphics\includegraphics
|
||||
\renewcommand{\includegraphics}[2][]{%
|
||||
\Oldincludegraphics[#1,width=\maxwidth,height=\maxheight,keepaspectratio]{#2}}
|
||||
}
|
||||
% Scale images if necessary, so that they will not overflow the page
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
$endif$
|
||||
|
||||
% Comment these out if you don't want a slide with just the
|
||||
|
|
|
@ -65,24 +65,14 @@ $if(tables)$
|
|||
$endif$
|
||||
$if(graphics)$
|
||||
\usepackage{graphicx}
|
||||
% Redefine \includegraphics so that, unless explicit options are
|
||||
% given, the image width will not exceed the width of the page.
|
||||
% Images get their normal width if they fit onto the page, but
|
||||
% are scaled down if they would overflow the margins.
|
||||
\makeatletter
|
||||
\def\ScaleIfNeeded{%
|
||||
\ifdim\Gin@nat@width>\linewidth
|
||||
\linewidth
|
||||
\else
|
||||
\Gin@nat@width
|
||||
\fi
|
||||
}
|
||||
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||
\makeatother
|
||||
\let\Oldincludegraphics\includegraphics
|
||||
{%
|
||||
\catcode`\@=11\relax%
|
||||
\gdef\includegraphics{\@ifnextchar[{\Oldincludegraphics}{\Oldincludegraphics[width=\ScaleIfNeeded]}}%
|
||||
}%
|
||||
% Scale images if necessary, so that they will not overflow the page
|
||||
% margins by default, and it is still possible to overwrite the defaults
|
||||
% using explicit options in \includegraphics[width, height, ...]{}
|
||||
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||
$endif$
|
||||
\ifxetex
|
||||
\usepackage[setpagesize=false, % page size defined by xetex
|
||||
|
|
Loading…
Add table
Reference in a new issue