Das passiert, weil \includegraphics selbst ja auch wieder \filename@parse aufruft und dadurch \filename@area und \filename@base definiert. Da diese beiden aber auch im Argument vorkommen, beißt sich der Hund in den Schwanz:
Code:
\documentclass[a4paper]{scrartcl}
\usepackage{graphics}
\usepackage{adjustbox}
%------------------------------------------------------------------------------%
\makeatletter
\newcommand*{\myfilename}{}
\newcommand{\myincludegraphics}[2][\empty]{%
\filename@parse{#2}%
\edef\myfilename{\filename@area\filename@base_suffix}%
\includegraphics[#1]{\myfilename}%
}
\makeatother
%------------------------------------------------------------------------------%
\begin{document}
\myincludegraphics[width=0.5\textwidth]{pictures/test}
\end{document}
Wichtig ist, dass man für \myfilename \edef und nicht nur \def verwendet. Sonst hat man dasselbe Problem in grün.
Ich habe auch gleich noch ein paar im horizontalen Modus Leerzeichen produzierende Zeilenenden auskommentiert. Darauf solltest Du künftig auch achten.
Alternativ geht auch eine \expandafter-Orgie:
Code:
\documentclass[a4paper]{scrartcl}
\usepackage{graphics}
\usepackage{adjustbox}
%------------------------------------------------------------------------------%
\makeatletter
\newcommand*{\@myincludegraphics}{}
\newcommand{\myincludegraphics}[2][\empty]{%
\filename@parse{#2}%
\def\@myincludegraphics{\includegraphics[#1]}%
\expandafter\expandafter\expandafter\@myincludegraphics
\expandafter\expandafter\expandafter{%
\expandafter\filename@area\filename@base_suffix}%
}
\makeatother
%------------------------------------------------------------------------------%
\begin{document}
\myincludegraphics[width=0.5\textwidth]{pictures/test}
\end{document}
Dabei wird dafür gesorgt, dass \filename@area und \filename@base expandiert werden, bevor \includegraphics das Argument zu sehen bekommt. Diese Lösung hat den Vorteil, dass sie selbst dann noch funktioniert, wenn innerhalb von \includegraphics \@myincludegraphics umdefiniert würde.
Lesezeichen