Trotz fehlendem vollständigen Minimalbeispiel, getestet:
Code:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[demo]{graphicx}% ACHTUNG: Option clip im Beispiel unten
% funktioniert mit Option demo hier nicht, das
% heißt, es wird die gesamte Grafik angezeigt, auch
% wenn im Realfall ein Beschnitt durchgeführt
% würde. Also besser mit echter Grafik testen und
% hier "demo" entfernen!
\newsavebox\mygraphicsbox
\newcommand*{\ctincludegraphics}[2][]{%
\begingroup
\savebox\mygraphicsbox{\includegraphics[{#1}]{#2}}%
\ifdim\wd\mygraphicsbox >\linewidth
% Die Grafik muss rechts beschnitten werden.
\ifdim \ht\mygraphicsbox>\textheight
% Die Grafik muss auch oben beschnitten werden.
\edef\options{#1,viewport=0 0 \linewidth\space\textheight\space,clip}%
\else
% Die Grafik muss oben nicht beschnitten werden.
\edef\options{#1,viewport=0 0 \linewidth\space\ht\mygraphicsbox\space,clip}%
\fi
\else
% Die Grafik muss rechts nicht beschnitten werden.
\ifdim\ht\mygraphicsbox>\textheight
% Die Grafik muss oben beschnitten werden.
\edef\options{#1,viewport=0 0 \wd\mygraphicsbox\space\the\textheight\space,clip}%
\else
% Die Grafik kann so verwendet werden, wie sie in der Box bereits ist
\def\options{#1}%
\fi
\fi
\expandafter\includegraphics\expandafter[\options]{#2}
\endgroup
}
\begin{document}
\centering
\ctincludegraphics{test}
\ctincludegraphics[width=8cm,height=8cm]{test}
\ctincludegraphics[width=28cm,height=8cm]{test}
\ctincludegraphics[width=8cm,height=48cm]{test}
\ctincludegraphics[width=28cm,height=48cm]{test}
\end{document}
Es wird dann einfach an Stelle von \includegraphics das neue \ctincludegraphics verwendet. Wenn man horizontal zentrieren will, kombiniert man das beispielsweise mit \centering.
Lesezeichen