(Die Grafik heißt dabei assoz1rrg.eps). Ersetzt man \includegraphics oder \ifthenelse durch andere oder durch Dummy-Befehle, dann ergibt sich kein Problem, so aber erhält man
ERROR: Illegal parameter number in definition of \filename@base.
Willst Du wirklich die Ursache oder tatsächlich die Lösung wissen? Die Ursache ist die Art und Weise wie beide Pakete die Argumente der beiden Anweisungen expandieren.
\ifthenelse ist übrigens bekannt für Expansionsprobleme unterschiedlicher Art. Manchmal bekommt man das mit passend gesetzten \protect auf die Reihe, manchmal nicht. Oft ist zu empfehlen, den Test aus allen Argumenten anderer Anweisungen heraus zu ziehen. Hoppla, jetzt bin ich statt bei der Beantwortung der Frage nach der Ursache,doch bei der Lösung gelandet.
Hast Du den bereits in der Erklärung enthaltenen Trick bereits ausprobiert? Also: Verwende nicht \ifthenelse im Argument von \includegraphics, sondern \includegraphics im zweiten und dritten Argument von \ifthenelse. Ergänze ggf. \protect vor \includegraphics.
Das funktioniert schon, ist aber in meinem Fall nicht sooo toll.
Ich generiere nämlich in meinem Dokument über mehrere Befehlsebenen (d.h. größere Stacktiefe) einen Dateinamen (aus insgesamt 4 Stücken, die in unterschiedlichen Ebenen erzeugt werden), den ich dann mit \includegraphics öffnen will. Benutze ich \includegraphics innerhalb von \ifthenelse, dann muß ich alle Parameter an die tiefste Ebene weiterreichen, weil dann dort der \includegraphics-Befehl auftaucht.
Als erster Tip war es ganz hilfreich, aber es wäre schon schön, wenn es möglich wäre, zuerst in Abhängigkeit von Parametern einen String zu kreieren und ihn dann an in \includegraphics zu übergeben.
Dann definier innerhalb von \ifthenelse für den Dateinamen eben per \newcommand oder \renewcommand ein Makro und verwende das später innerhalb von \includegraphics. Oder definiere Dir ein Makro der Art
Verwende nicht \ifthenelse, es ist nicht expandierbar, expandiert aber sein Argument, was je nach Situation zu verschiedenen Problemen führen kann. Verwende stattdessen expandierbare Tests aus moderneren Paketen wie etoolbox oder expl3 oder primitive TeX-Tests wie \ifnum. Die sind gleich mächtig wie \ifthenelse, aber die Syntax ist anders.
Die Probleme des ifthen-Pakets werden auch in der Dokumentation erwähnt: „It is unfortunate that in order to remain compatible with ifthen syntax, it is necessary to have a two pass system. The first pass inside an \edef ‘exposes’ the \if. . . \fi tokens, so the corect clauses may be skipped on the second pass. This means that the whole \ifthenelse command does not work by expansion, and so possibly has only limited usefulness for macro code writers. The main problem with the ifthen: syntax is that (unique for LATEX) it does not uses a brace delimited argument form, and exposes the primitive TEX syntax for ⟨number⟩. Pretty much the only way of parsing 1 > 2 \or 2 < 1 is to actually evaluate the
primitive \ifnums. A syntax such as: \or{\numtest{1<2}}{\lengthtest{1pt<1in}} could easily be evaluated in a one pass way, operating directly via expansion, and leaving no extra tokens in the token stream.“
Wie genau sieht denn dein Vergleich aus? 1<2 wird es ja kaum sein.