Duplikat zu: Wie wende ich keys (xkeyval) richtig an? Siehe dort für Lösungen.


Im Anschluß an Wie wende ich keys (xkeyval) richtig an? habe ich noch folgendes Problem:

Evtl. soll kein "shorttitle" gesetzt werden. Läßt man diesen aber aus, steht auch nichts im Abbildungsverzeichnis - wie könnte ich das lösen? Zwingend muß dort bereits \lofimage{\IMG@file} stehen, für die Miniabbildung der Abbildung im Abbildungsverzeichnis.

Gibt es eine simple "key-Methode" oder nur eine komplizierte if-Methode oder sowas?

alt text

Open in Online-Editor
\documentclass[a5paper, onside, automark, open=any, headsepline]{scrartcl}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[top=10mm]{geometry}

\usepackage{xcolor}
\usepackage{mwe}
 \pagecolor{red!42!yellow!20}
% ===============================
% Mini-Bilder im Abbildungsverzeichnis =========
 \usepackage{graphicx}
\newlength{\lofthumbsize}
\setlength{\lofthumbsize}{2em}

\newif\iflofimage
\DeclareRobustCommand*{\lofimage}[2][]{%
  \iflofimage
    $\vcenter to \lofthumbsize{\vss%
      \hbox to \lofthumbsize{\hss\includegraphics[{width=\lofthumbsize,height=\lofthumbsize,keepaspectratio=true,#1}]{#2}\hss}%
    \vss}$%
    \quad
  \fi
  \ignorespaces
}

\usepackage{xkeyval}
%%% Definition mit Keys %%%%%%%%%%%%%%%%%%%
\makeatletter
\newcommand*\IMG@figureoptions{htb}
\newcommand*\IMG@options{}
\newcommand*\IMG@file{}
\newcommand*\IMG@shorttitle{}
\newcommand*\IMG@title{}

\define@key{IMG}{figureoptions}  {\renewcommand*\IMG@figureoptions{#1}}
\define@key{IMG}{options}  {\renewcommand*\IMG@options{#1}}
\define@key{IMG}{file} {\renewcommand*\IMG@file{#1}}
\define@key{IMG}{shorttitle}{\renewcommand*\IMG@shorttitle{#1}}
\define@key{IMG}{title}{\renewcommand*\IMG@title{#1}}

\newcommand*\IMG[1][]{%
\begingroup
\setkeys{IMG}{#1}%
%\begin{figure}[\IMG@figureoptions]   % GEHT NICHT gut - Besser     htb      ???
\begin{figure}[htb]
\begin{center}
\expandafter\includegraphics\expandafter[\IMG@options]{\IMG@file}
\caption[\lofimage{\IMG@file}  \IMG@shorttitle]{\lofimage{\IMG@file}  \IMG@title}
\end{center}
\end{figure}
\endgroup
}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ===============================
% ===============================
%========
\begin{document}
%========
\lofimagetrue
\listoffigures \par
\lofimagefalse
%\vspace{0.5cm}

\section{Abschnittsname}
\IMG[file=example-image, title=fooTitel, options={width=\textwidth}, shorttitle={fooKurztitel}, figureoptions={h}]

\IMG[file=example-grid-100x100pt, title=barTitel, options={scale=0.5}, shorttitle={barKurztitel}, figureoptions={h}] 
%========
\end{document}
%========

gefragt 17 Aug '14, 16:32

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 28 Jun '15, 22:01

cgnieder's gravatar image

cgnieder
22.1k253463

@cis: Das hatte ich Dir eigentlich in meiner Antwort zur anderen Frage bereits gezeigt …

(17 Aug '14, 17:17) gast3

Stimmt, aber ich weiß grad nicht, wie ich das hier anwenden kann.

(17 Aug '14, 17:22) cis

Genauso wie bei mir. Du musst \IMG@shorttitle in der Voreinstellung nicht leer, sondern unter Verwendung von \IMG@title definieren. Das kannst Du 1:1 aus meiner Lösung übertragen. Außerdem solltest Du eine Fehlerbehandlung für ein fehlendes file=… einbauen (habe ich in meiner Lösung) und wenn figureoptions funktionieren soll, dann musst Du es expandieren. Auch das zeigt meine Lösung. Außerdem erscheint es mir wenig sinnvoll, die ganzen Hilfsmakros außerhalb der Gruppe in \IMG überhaupt definiert zu haben. Deshalb macht meine Lösung das innerhalb …

(17 Aug '14, 17:38) gast3

In der gelinkten Frage wird mit Ijon Tichys und meiner Antwort als Standard einfach der Titel in den Kurztitel kopiert.

(17 Aug '14, 17:47) Henri

Ist die Frage gelöst (und wir können sie als Duplikat der anderen Frage schließen), oder ist die Frage noch offen?

(27 Jun '15, 15:09) cgnieder

Die Frage wurde aus folgenden Grund "Duplikat einer anderen Frage" geschlossen cgnieder 28 Jun '15, 21:59

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×46
×21
×5
×3
×3

gestellte Frage: 17 Aug '14, 16:32

Frage wurde gesehen: 3,743 Mal

zuletzt geändert: 28 Jun '15, 22:01