Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktion erstellen um sich ständig wiederholende LatexCodeZeilen zu Vermeiden
Hallo zusammen,
ich habe folgendes "Problem" in mein Dokument kommen doch einige Bilder rein. Die ich wie folgt einbinde.
\begin{figure}[htb]
\begin{center}%
\sbox\bildbox{\includegraphics[width=\ScaleIfNeeded]{PFAD_ZUM_BILD}}
\settowidth\bildboxbreite{\usebox\bildbox}
\addtolength\bildboxbreite{\zusatzbreite}
\color{\boxcolor}
\shadowbox{%
\begin{minipage}{\bildboxbreite}%
\usebox\bildbox
\caption{BILD_UNTERSCHRIFT}
\label{pic:REFERENZ}%
\end{minipage}}
\end{center}%
\end{figure}
Das Funktioniert auch ganz gut. Nun frage ich mich wie ich mir das ständige Copy&Paste ersparen kann? Ich dachte da an eine "Funktion", der die drei Parameter BILD_PFAD, BILD_UNTERSCHRIFT und REFERENZ mit geben werden? Wie müsste das den gemacht werden, ich bin ein totaler Latex Neuling.
Vielen Dank schon mal im Voraus
Hallo,
aus dem Codeschnipsel ist nicht ersichtlich, welche Pakete geladen werden müssen und wie der Befehl \ScaleIfNeeded definiert ist. Mache bitte immer ein vollständiges Minimalbeispiel wie bei deiner Frage unter http://www.mrunix.de/forums/showthread.php?t=68898
Folgendes funktioniert bei mir (basiert auf dem Beispiel im angegebenen Link):
\documentclass{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{fancybox}
\usepackage[font=scriptsize,labelfont=bf, justification=raggedright, singlelinecheck=false]{caption}
\newsavebox\bildbox
\newlength\bildboxbreite
\newcommand\zusatzbreite{0.5cm}
\renewcaptionname{ngerman}{\figurename}{Abb.:}
\definecolor{light-gray}{rgb}{0.7, 0.7, 0.7}
% Folgende Zeilen sollte ein zu großes Bild
% entsprechend passend skallieren so das es auf die Seite Passt
\makeatletter
\def\ScaleIfNeeded{%
\ifdim\Gin@nat@width>\dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
\dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
\else
\Gin@nat@width
\fi
}
\newcommand\Bild[3]{%
\sbox\bildbox{\includegraphics[width=\ScaleIfNeeded]{#1}}%
\settowidth\bildboxbreite{\usebox\bildbox}%
\addtolength\bildboxbreite{\zusatzbreite}%
\color{light-gray}%
\shadowbox{%
\begin{minipage}{\bildboxbreite}%
\centering\usebox\bildbox%
\caption{#2}%
\label{pic:#3}%
\end{minipage}%
}%
}
\begin{document}
\begin{figure}[htb]
\begin{center}%
\Bild{Bilddatei}{Bildtext}{Bildlabel}
\end{center}%
\end{figure}
\end{document}
Gruß
Elke
Schweinebacke
26-05-2011, 10:47
Ersetze:
\begin{figure}[htb]
\begin{center}%
\Bild{Bilddatei}{Bildtext}{Bildlabel}
\end{center}%
\end{figure}
durch:
\begin{figure}% das optionale Argument braucht man nur im Ausnahmefall.
% Für den Regelfall siehe Dante-FAQ (http://projekte.dante.de/DanteFAQ/FloatPlatzierung#4).
\centering% Die center-Umgebung fügt zusätzlichen vertikalen Abstand ein,
% den man in Gleitumgebungen normalerweise nicht haben will.
% Siehe dazu auch l2tabu
\Bild{Bilddatei}{Bildtext}{Bildlabel}
\end{figure}
mechanicus
26-05-2011, 11:12
Hi,
Bezugnehmend auf die Zeile:
\renewcaptionname{ngerman}{\figurename}{Abb.:}}
möchte ich noch folgende Hinweise geben.
Der Separator ist bei einer KOMA-Klasse
\documentclass{scrbook}
im Makro \captionformat hinterlegt.
Durch das Laden des Paketes caption:
\usepackage[font=scriptsize,labelfont=bf, justification=raggedright, singlelinecheck=false]{caption}
}
ist das Trennzeichen ebenfalls definierbar über die Option labelsep.
Gruß
Marco
Hallo,
\centering lässt sich dann noch in den Befehl einbauen.
@Marco: Danke fürs Finden des mitgeschleppten Tippfehlers. Der Doppelpunkt hinter Abb. musste einfach nur gelöscht werden, da ja nicht Abb.: 0.1: da stehen soll.
\documentclass[captions=nooneline]{scrbook}
\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx,blindtext}
\usepackage{xcolor}
\usepackage{fancybox}
\renewcaptionname{ngerman}{\figurename}{Abb.}
\addtokomafont{captionlabel}{\scriptsize\bfseries}
\addtokomafont{caption}{\scriptsize}
\newsavebox\bildbox
\newlength\bildboxbreite
\newcommand\zusatzbreite{0.5cm}
\definecolor{light-gray}{rgb}{0.7, 0.7, 0.7}
% Folgende Zeilen sollte ein zu großes Bild
% entsprechend passend skalieren, das es auf die Seite passt
\makeatletter
\def\ScaleIfNeeded{%
\ifdim\Gin@nat@width>\dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
\dimexpr\linewidth-\zusatzbreite-\shadowsize-2\fboxsep-0.5pt\relax
\else
\Gin@nat@width
\fi
}
\newcommand\Bild[3]{%
\centering
\sbox\bildbox{\includegraphics[width=\ScaleIfNeeded]{#1}}%
\settowidth\bildboxbreite{\usebox\bildbox}%
\addtolength\bildboxbreite{\zusatzbreite}%
\color{light-gray}%
\shadowbox{%
\begin{minipage}{\bildboxbreite}%
\centering\usebox\bildbox%
\caption{#2}%
\label{pic:#3}%
\end{minipage}%
}%
}
\begin{document}
\begin{figure}
\Bild{Bilddatei}{Bildtext}{Bildlabel}
\end{figure}
\end{document}
Gruß
Elke
Vielen Dank, das hat super geklappt und das mit dem Minibeispiel hatte ich vergessen:(,
ich gelobe Besserung.
Noch mal vielen Dank euch dreien.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.