Abbildungsverzeichnis kürzen / Abbildungen zusammenfassen

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


q_999
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Do 7. Feb 2013, 10:26

Abbildungsverzeichnis kürzen / Abbildungen zusammenfassen

Beitrag von q_999 »

Hi,

nach langer Google-Recherche habe ich noch keine passende Antwort für mein Problem gefunden. Ich hoffe hier kann mir jemand weiterhelfen.
Ich möchte in meinem Abbildungsverzeichnis ähnliche (nacheinander folgende) Bildbezeichnungen zu einer zusammenfassen, da dieses mit über 100 Abbildungen ansonsten zu lange wird.

Beispiel:

Ausschnitt aus Abbildungsverzeichnis:

6.9 Bild xyz S.49
6.10 Ergebnis für 10°C S.50
6.11 Ergebnis für 12°C S.50
6.12 Ergebnis für 14°C S.51
6.13 Bild zzz S.52


Nun sollen 6.10, 6.11 und 6.12 zusammengefasst werden, etwa in der Art:

6.9 Bild xyz S.49
6.10ff oder (6.10 - 6.12) Ergebnis für 10°C -14°C S.50 - 51
6.13 Bild zzz S.52


Ich verwende die Dokumentenklasse "scrreprt" und binde meine Bilder so ein:

\begin{figure}[h!]
\center
\includegraphics[height=10cm]{Pfad des Bildes}
\caption{\small Ergebnis für 10°C}
\label{Test123}
\end{figure}

Gibt es eine Möglichkeit dies zu realisieren? \subfigure[] wäre bestimmt eine Möglichkeit, aber bei der Menge an Bildern sehr aufwendig. Vielen Dank schon Mal im Voraus.

Besserwisser

Beitrag von Besserwisser »

Zunächst will ich dich bitten, künftig immer ein vollständiges Minimalbeispiel anzugeben. Außerdem solltest Du Code in Deinen Beiträgen auch als solchen kennzeichnen, wie das im Hinweis für Code in Beitrag mit Beispiel über dem Eingabefeld für den Beitragstext sehr deutlich erklärt wird!

Desweiteren enthält Dein Codeschnippsel zwei Fehler:
  1. Statt \center solltest Du \centering verwenden, weil Du sonst eine center-Umgebung beginnst, ohne diese sauber zu beenden aber mit den bekannten Nachteilen in einer Gleitumgebung.
  2. Statt \small im Argumet von \caption zu verwenden, solltest Du die Schriftart für das Element caption mit Hilfe von
    \addtokomafont{caption}{\small}
    entsprechend erweitern. Das ist nicht nur komfortabler, das \small landet dann auch nicht unerwünscht im Verzeichnis. Siehe dazu auch unbedingt die KOMA-Script-Anleitung!
In der KOMA-Script-Anleitung findest Du dann irgendwo AFAIK auch, dass Du mit leerem optionalem Argument bei \caption den Eintrag ins entsprechende Verzeichnis unterdrücken kannst. Wenn Du also etwas wie
\begin{figure}
…
\caption[]{Beispielabbildung ohne Eintrag ins Verzeichnis}
\makeatletter
\l@addto@macro\thefigure{ff}% ff an die Nummer anhängen
\addcontentsline{lof}{figure}{Eintrag ins Verzeichnis}
\end{figure}
machst und bei allen folgenden Abbildungen ebenfalls eiin leeres optionales Argument verwendest, sollte das eigentlich funktionieren.

Vermutlich wirst Du dann noch Probleme mit der Nummernlänge im Verzeichnis bekommen. In dem Fall sei auf Option listof=flat in der KOMA-Script-Anleitung verwiesen. Bitte unbedingt die Hinweise dazu lesen!

Da Du kein Minimalbeispiel gemacht hast, spare ich mir zu testen, ob das so wirklich funktioniert.

q_999
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Do 7. Feb 2013, 10:26

Beitrag von q_999 »

Hi.

Vielen Dank für die schnelle Antwort. Deine beiden Hinweise werden ich von nun an beachten. Mit deinem Code habe ich ein Minimalbeispiel erstellt:
%
\documentclass[listof=flat,12pt,onesided,a4paper,notitlepage,headsepline,pointlessnumbers]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[hang,sl]{caption}
\addtokomafont{caption}{\small}
\usepackage{geometry}							
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=30mm,headsep=10mm, footskip=12mm}

\begin{document}

\listoffigures % Abbildungsverzeichnis
\newpage

  \begin{figure}[ht]
  \centering
  \caption{xyz}
  \end{figure}
  
  \begin{figure}[ht]
  \centering
	\caption[]{Brutto--Inlandsprodukt der Bundesrepublik Deutschland von 1970-1980}
	\makeatletter
	\l@addto@macro\thefigure{ff}% ff an die Nummer anhängen
	\makeatother
  \addcontentsline{lof}{figure}{Brutto--Inlandsprodukt der Bundesrepublik von 1970-1980, 1980-1990 und 1990-2000}
	\end{figure}
  
  \begin{figure}[ht]
  \centering
  \caption[]{Brutto--Inlandsprodukt der Bundesrepublik Deutschland von 1980-1990}
  \end{figure}
  
  \clearpage
  
  \begin{figure}[ht]
  \centering
  \caption[]{Brutto--Inlandsprodukt der Bundesrepublik Deutschland von 1990-2000}
  \end{figure}
  
  \clearpage
  
  \begin{figure}[ht]
  \centering
  \caption{zzz}
  \end{figure}
  
\end{document}

%
Was funktioniert:

Die drei Captions "Brutto-Inlandsprodukt der Bundesrepublik Deutschland von 1970-1980", "Brutto-Inlandsprodukt der Bundesrepublik Deutschland von 1980-1990" und "Brutto-Inlandsprodukt der Bundesrepublik Deutschland von 1990-2000" konnte ich zu dem Eintrag "Brutto-Inlandsprodukt der Bundesrepublik von 1970-1980, 1980-1990 und 1990-2000" im Abbildungsverzeichnis zusammenfassen.

Was mir nun noch fehlt:

Die Nummerierung für den Eintrag "Brutto-Inlandsprodukt der Bundesrepublik von 1970-1980, 1980-1990 und 1990-2000" mit dem Zusatz "ff" und die erweiterte Seitenangabe (eines der drei Bilder befindet sich auf Seite 3).

Vielen Dank schon Mal!

Besserwisser

Beitrag von Besserwisser »

Zunächst: Du hast ein paar veraltete Optionen in Gebrauch. Du solltest Dir die Warnungen anschauen, die KOMA-Script deshalb ausgibt. Außerdem hast Du Dich bei einer Option verschieben. Ich werde das in meinem Beispiel unten korrigieren und entsprechende Kommentare hinzufügen. Bitte beachten und in der KOMA-Script-Anleitung nachlesen!

Dann sei erwähnt, dass Du bei Verwendung von caption, die Schriftgröße ebenfalls per Option setzen kannst.

Außerdem verwendest Du falsche Striche. Der Bindestrich ist der gleiche wie der Trennstrich (davon abgesehen, dass der Trennstrich hängend ist, aber das ist ein anderes Thema), dafür ist der korrekte Bis-Strich ein Halbgeviertstrich. Ich habe das im Beispiel unten ebenfalls korrigiert. Der Gedankenstrich wäre ebenfalls ein Halbgeviertstrich aber mit Leerzeichen davor und dahinter. Im Englischen ist es übrigens ein wenig anders.

1. Ist sehr leicht mit einer kleinen Änderung (eigentlich sogar eine Vereinfachung) umzusetzen:
  \begin{figure}[ht]
  \centering
   \caption[]{Brutto-Inlandsprodukt der Bundesrepublik Deutschland von 1970--1980}
  \addcontentsline{lof}{figure}{\numberline{\thefigure ff}Brutto-Inlandsprodukt der Bundesrepublik von 1970--1980, 1980--1990 und 1990--2000}
   \end{figure}
Bei 2. wird es schwieriger. Da muss man sich von \addcontentsline lösen, weil das die Seitenzahl automatisch einfügt. Ich habe dann im Beispiel auch mal statt ff anzuhängen gleich die Nummern im Schema A--B eingebaut. Leider scheint dann listof=flat nicht mehr zu funktionieren. Deshalb habe ich die Ausgabe des Verzeichniseintrags mit \l@figure ebenfalls umdefiniert und dort neue, feste Werte eingetragen. Zusätzlich habe ich alle Abbildungen mit Label versehen, nicht nur die eine, bei der es wirklich benötigt wird. Alles weitere ist im Listing dokumentiert. Wichtig ist nur noch, dass min. 2 LaTeX-Läufe benötigt werden, damit alles stimmt.
\documentclass[% listof=flat entfernt, weil es mit den Änderungen unten nicht
               % mehr funktioniert.
  12pt,% korrekte, alte Option (neu wäre: fontsize=12pt)
  oneside,% korrekte überflüssige Option (war falsch: onesided)
  a4paper,% korrekte überflüssige Option
  notitlepage,% korrekte, alte Option (neu wäre: titlepage=false)
  headsepline,% korrekte Option,
  numbers=noenddot,% korrekte, neue Option (war veraltet: pointlessnumbers)
]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[hang,sl,small]{caption}% Schriftgröße small hinzugefügt
\usepackage{geometry}                    
\geometry{a4paper, top=25mm, left=25mm, right=25mm, bottom=30mm,headsep=10mm, footskip=12mm}

\AtBeginDocument{% Erst bei \begin{document} ausführen, weil davor das
                 % Verzeichnis noch nicht beschreibbar ist.
  % Wir benötigen im Abbildungsverzeichnis deutlich mehr Platz für die
  % Seitenzahlen, weil dort Bereiche angegeben werden.
  \addtocontents{lof}{\protect\renewcommand*{\string\@pnumwidth}{4em}%
    \protect\renewcommand*{\string\@tocrmarg}{5em}}%
}
\makeatletter
% Wir benötigen im Abbildungsverzeichnis deutlich mehr Platz für die
% Nummernspalte, weil dort Bereiche angegeben werden.
\renewcommand*{\l@figure}{\@dottedtocline{1}{0em}{5em}}
\makeatother
% Und jetzt der neue Befehl, um einen Bereich von der aktuellen Abbildung bis
% zu einer per Referenz gegebenen aufzuspannen:
\newcommand*{\addcaptionentry}[3][figure]{%
  % optionales erstes Agument: figure, table o. ä. (default: figure)
  % zweites Argument: Label der letzten Abbildung, Tabelle ö. ä.
  % drittes Argument: Text des Eintrags
  % Statt \addcontentsline muss hier direkt auf \addtocontents und
  % \contentsline zurückgegriffen werden, damit das bei \addcontentsline
  % automatisch eingefügte \thepage-Argument ersetzte werden kann.
  \addtocontents{\csname ext@#1\endcsname}{%
    \protect\contentsline{#1}{%
      \numberline{\csname the#1\endcsname--\ref{#2}}#3%
    }{%
      \thepage--\pageref{#2}%
    }%
  }%
}
\makeatother

\begin{document}

\listoffigures % Abbildungsverzeichnis

\chapter{Beispiel}

  \begin{figure}[ht]
  \centering
  \caption{xyz}\label{fig:vorher}
  \end{figure}
 
  \begin{figure}[ht]
  \centering
   \caption[]{Brutto--Inlandsprodukt der Bundesrepublik Deutschland von
     1970-1980}\label{fig:start}
   \addcaptionentry{fig:ende}{Brutto-Inlandsprodukt der Bundesrepublik von
     1970--1980, 1980--1990 und 1990--2000}
   \end{figure}
 
  \begin{figure}[ht]
  \centering
  \caption[]{Brutto-Inlandsprodukt der Bundesrepublik Deutschland von 1980--1990}\label{fig:mitte}
  \end{figure}
 
  \clearpage
 
  \begin{figure}[ht]
  \centering
  \caption[]{Brutto-Inlandsprodukt der Bundesrepublik Deutschland von 1990--2000}\label{fig:ende}
  \end{figure}
 
  \clearpage
 
  \begin{figure}[ht]
  \centering
  \caption{zzz}\label{fig:danach}
  \end{figure}
 
\end{document}
Zum Schluss noch: Wenn Du eine Rückfrage beantwortet hast, solltest Du den Status wieder auf "offen" stellen. Ebenso solltest Du, wenn das Problem irgendwann gelöst ist, den Status auf "beantwortet" setzen.

Besserwisser

Beitrag von Besserwisser »

Jetzt hatte ich doch glatt selbst vergessen, den Status anzupassen … :roll:

Besserwisser

Beitrag von Besserwisser »

Besserwisser hat geschrieben: Leider scheint dann listof=flat nicht mehr zu funktionieren. Deshalb habe ich die Ausgabe des Verzeichniseintrags mit \l@figure ebenfalls umdefiniert und dort neue, feste Werte eingetragen.
Der Punkt hat mir keine Ruhe gelassen. Der Grund war schlicht, dass ich ein \protect zu wenig hatte. Mit folgendem leicht geänderten \addcaptionentry kann man auf die Umdefinierung von \l@figure verzichten und bekommt nach 3 LaTeX-Läufen automatisch ein korrektes Ergebnis:
% Und jetzt der neue Befehl, um einen Bereich von der aktuellen Abbildung bis
% zu einer per Referenz gegebenen aufzuspannen:
\newcommand*{\addcaptionentry}[3][figure]{%
  % optionales erstes Agument: figure, table o. ä. (default: figure)
  % zweites Argument: Label der letzten Abbildung, Tabelle ö. ä.
  % drittes Argument: Text des Eintrags
  % Statt \addcontentsline muss hier direkt auf \addtocontents und
  % \contentsline zurückgegriffen werden, damit das bei \addcontentsline
  % automatisch eingefügte \thepage-Argument ersetzte werden kann.
  \addtocontents{\csname ext@#1\endcsname}{%
    \protect\contentsline{#1}{%
      \protect\numberline{\csname the#1\endcsname--\ref{#2}}#3% HIER GEÄNDERT
    }{%
      \thepage--\pageref{#2}%
    }%
  }%
}

q_999
Forum-Newbie
Forum-Newbie
Beiträge: 5
Registriert: Do 7. Feb 2013, 10:26

Beitrag von q_999 »

Funktioniert alles super. Vielen Dank!!!

Antworten