ifthenelse und includegraphics zur fallbasierten Picauswahl

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


tumsi
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 27. Apr 2012, 10:42

ifthenelse und includegraphics zur fallbasierten Picauswahl

Beitrag 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?

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Re: ifthenelse und includegraphics zur fallbasierten Picausw

Beitrag 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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

tumsi
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Fr 27. Apr 2012, 10:42

Beitrag 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!

Antworten