Seite 1 von 1

ifthenelse und includegraphics zur fallbasierten Picauswahl

Verfasst: Fr 27. Apr 2012, 10:59
von tumsi
Hallo zusammen,

Ich schreibe gerade an einer umfangreichen Arbeit und möchte folgendes realisieren: Wenn kein Bildpfad angegeben ist, soll stattdessen ein Default-Bild ausgegeben werden. Dazu möchte ich mir einen eigenen Befehl basierend auf includegraphics definieren, allerdings kommt es dabei zu Fehlermeldungen in Verbindung mit ifthenelse.
\documentclass[twoside=semi,pagesize=auto,german]{scrbook}
\usepackage{graphicx}
\usepackage{ifthen}

\newcommand{\myincludegraphics}[2]{
    \ifthenelse{\equal{#2}{\empty}}{\includegraphics[#1]{images/draft}}{\includegraphics[#1]{#2}}
}

\begin{document}

\begin{figure}
    \centering
    \myincludegraphics[width=0.8\linewidth]{images/Bild1} % Bild existiert
\end{figure}

\begin{figure}
    \centering
    \myincludegraphics[width=0.8\linewidth]{} % Bild existiert nicht
\end{figure}

\end{document}
Die erste Fehlermeldung, die ich erhalte ist "Package keyval Error: [ undefined".
Ich nutze MikTex in der neusten Version in Verbindung mit dem Tecniccenter.

Kann mir jemand hierbei weiterhelfen?

Re: ifthenelse und includegraphics zur fallbasierten Picausw

Verfasst: Sa 28. Apr 2012, 02:03
von rais
Hallo,
tumsi hat geschrieben:Wenn kein Bildpfad angegeben ist, soll stattdessen ein Default-Bild ausgegeben werden. Dazu möchte ich mir einen eigenen Befehl basierend auf includegraphics definieren, allerdings kommt es dabei zu Fehlermeldungen in Verbindung mit ifthenelse.
das liegt nicht am \ifthenelse, sondern daran, daß Du hier
tumsi hat geschrieben:
\newcommand{\myincludegraphics}[2]{
...
}
Deinen \myincludegraphics so definierst, daß dieser zwei Parameter erwartet und später
tumsi hat geschrieben:
    \myincludegraphics[width=0.8\linewidth]{images/Bild1} % Bild existiert
so aufrufst, als kenne \myincludegraphics ein optionales Argument.
tumsi hat geschrieben: Die erste Fehlermeldung, die ich erhalte ist "Package keyval Error: [ undefined".
Also dürfte \myincludegraphics das `[' als erstes Argument einsammeln -- damit kann aber der \includegraphics-Befehl nix anfangen.
Ändere die Definition mal zu
\newcommand{\myincludegraphics}[2][width=0.8\linewidth]{%
    \ifthenelse{\equal{#2}{\empty}}{\includegraphics[#1]{images/draft}}{\includegraphics[#1]{#2}}%
}
dann kannst Du bei den Aufrufen hier im Beispiel zumindest die nun optionalen Argumente sogar weglassen.;)

MfG
Rainer

Verfasst: Sa 28. Apr 2012, 08:07
von tumsi
Danke für Deine Antwort. Ja, so funktioniert es - so eine Variante hatte ich, glaube ich, beim Ausprobieren auch irgendwann schon mal. Allerdings wollte ich habe ich versucht, das optionale Argument leer zu lassen. \empty als Default-Wert anzugeben, funktioniert leider auch nicht. Aber kurzum, ich kann mich jetzt mit dieser Lösung gut anfreunden!

Dank Dir habe ich jetzt auch die Fehlermeldung verstanden!