
Ich habe mich gefragt, ob es möglich ist, ein großes Makro zum Einfügen von Zahlen zu erstellen. Es sollte Folgendes enthalten:
\begin{figure} [H]
\centering
\includegraphics[scale=0.8]{#FILENAME}
\caption{#FIGURECAPTION \label{#LABELREF}}
\end{figure}
Da es so lang ist, wollte ich das Einfügen eines so langen „Codes“ einfacher machen. Soll ich es als Umgebung in der Präambel erstellen? Oder als neuen Befehl?
Ich wäre für jede Art von Hilfe dankbar, die ich bekommen könnte!
Antwort1
Hast du es versucht:
\newcommand\Figure[3]{%
\begin{figure} [H]
\centering
\includegraphics[scale=0.8]{#1}
\caption{#2}\label{#3}
\end{figure}
}
Sie verwenden dies als
\Figure{filename}{caption}{label}
Eigentlich noch besser wäre:
\newcommand\Figure[4][scale=0.8]{%
\begin{figure} [H]
\centering
\includegraphics[#1]{#2}
\caption{#3}\label{#4}
\end{figure}
}
Die zweite Variante definiert ein optionales Argument, das standardmäßig auf gesetzt ist scale=0.8
, um Argumente an zu übergeben \includegraphics
. Sie könnten beispielsweise Dinge wie schreiben \Figure[width=3cm]{filename}{caption}{label}
.
Bearbeiten: optionale kurze Beschriftung
Sigur hat in den Kommentaren um eine optionale kurze Bildunterschrift gebeten. Das ist tatsächlich etwas schwieriger, da Folgendes nicht funktioniert:
\newcommand\Figure[4][]{%
\begin{figure} [H]
\centering
\includegraphics[scale=0.8]{#2}
\caption[#1]{#3}\label{#4}
\end{figure}
}
denn ohne optionales Argument #1
ist leer und das Makro fügt ein \caption[]{...long caption...}
, sodass die Kurzüberschrift leer ist! Um dies zu umgehen, können Sie stattdessen beispielsweise den Standardwert #1
gleich setzen \relax
und dann im Makro verwenden
\ifx#1\relax\relax\caption{#3}\else\caption[#1]{#3}\fi
Jetzt verhält sich das Makro wie erwartet.
Eine bessere Lösung ist jedoch die Verwendung \NewDocumentCommand
vonxparsePaket, da Sie dadurch zwei optionale Argumente haben können. Hier ist eine Möglichkeit, dies zu tun:
\documentclass{article}
\usepackage{mwe}
\usepackage{xparse}
\usepackage{float}
\NewDocumentCommand\Figure{o D<>{scale=0.8} m m m}{%
% [optional short caption]<optional includegraphics options>{image}{caption}{label}
\begin{figure}[H]
\centering
\includegraphics[#2]{#3}
\IfNoValueTF{#1}{\caption{#4}}{\caption[#1]{#4}}
\label{#5}
\end{figure}
}
\begin{document}
\Figure{example-image-a}{Normal figure}{f:normal}
\Figure<width=20mm>{example-image-a}{Width 20mm }{f:20mm}
\Figure[Short caption]<width=20mm>{example-image-a}{With 20mm with short caption}{f:20mm}
\Figure[Short caption]{example-image-a}{Short caption}{f:20mm}
\end{document}
Ein optionales Argument dazwischen [...]
wird zur Kurzüberschrift und ein optionales Argument dazwischen <...>
wird an übergeben \includegraphics
, wobei der Standardwert ist scale=0.8
.