LATEX: long captions across pages required

Tabellen und Grafiken erstellen und anordnen


Wuchtbrumme
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 22. Nov 2017, 18:23

LATEX: long captions across pages required

Beitrag von Wuchtbrumme »

Hallo zusammen,

ich schreibe gerade meine PHD Thesis und habe öfter den Fall, dass ich große Abbildungen (etwa halbseitige Größe) mit sehr langen Bildunterschriften (auch etwa halbseitige Länge) einbinden muss.
Das Problem besteht darin, dass Latex standardmäßig nicht in der Lage ist, eine Bildunterschrift auf der nächsten Seite fortzusetzen, falls diese das Ende einer Seite erreicht.

Problembild

Das folgende Minimalbeispiel zeigt das Fehlerverhalten (Im Anhang befindet sich noch das entsprechende PDF, das in Texmaker erzeugt wurde):
\RequirePackage{fix-cm}
\documentclass[a4paper,twoside,openright,headsepline,parskip]{scrreprt}
\usepackage[scaled=0.92]{helvet}
\usepackage{setspace}
\onehalfspacing
\usepackage[a4paper]{geometry}
\geometry{width=16cm, left=3cm, top=2.5cm, bottom=2.5cm}
\usepackage[headsepline]{scrpage2}
\pagestyle{scrheadings}
\lehead{\fontfamily{cmr}\textsc{Results}}
\rohead{\fontfamily{cmr}\textsc{Results}}
\usepackage[english]{babel}
\usepackage[nooneline]{caption}
\usepackage{graphicx}  
\usepackage[format=plain, font={small, singlespacing}, labelfont=bf]{caption}
\usepackage{kantlipsum}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\kant[1-2]

\begin{figure}%
\includegraphics[scale=1.1]{example-image-c}
\caption{\kant[1-5]}
\end{figure}

\kant[2-5]

\end{document} 


Hoffnungsvollste Lösung

Beim Durchforsten des Internets nach diesem Problem stieß ich auf einen Beitrag, der mein Problem fast lösen konnte: https://groups.google.com/forum/#!topic ... Dz1cXtJZHA.
Ich verstehe zwar nicht genau, wie der zusätzliche Codeblock das Problem umgeht, aber ich lese heraus, dass die Art der Erzeugung von Captions neu definiert wurde und damit die Float-Umgebung ignoriert wurde. Wenn ich mein Minimalbeispiel von oben entsprechend anpasse ergibt sich der folgende Code. Das gerenderte PDF befindet sich auch im Anhang.
\RequirePackage{fix-cm}
\documentclass[a4paper,twoside,openright,headsepline,parskip]{scrreprt}
\usepackage[scaled=0.92]{helvet}
\usepackage{setspace}
\onehalfspacing
\usepackage[a4paper]{geometry}
\geometry{width=16cm, left=3cm, top=2.5cm, bottom=2.5cm}
\usepackage[headsepline]{scrpage2}
\pagestyle{scrheadings}
\lehead{\fontfamily{cmr}\textsc{Results}}
\rohead{\fontfamily{cmr}\textsc{Results}}
\usepackage[english]{babel}
\usepackage[nooneline]{caption}
\usepackage{graphicx}  
\usepackage[format=plain, font={small, singlespacing}, labelfont=bf]{caption}
\usepackage{kantlipsum}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% LONG CAPTIONS Configuration
% to be inserted before \begin{document}
% source: https://groups.google.com/forum/#!topic/latexusersgroup/9Dz1cXtJZHA

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\makeatletter

%Figure environment without an float format
\newenvironment{Figure}{%
   \par\addvspace{12pt plus2pt}%
   \def\@captype{figure}%
}{%
   \par\addvspace{12pt plus2pt}%
}%

%taken from article.cls
\long\def\@makecaption#1#2{%
  \vskip\abovecaptionskip
  \sbox\@tempboxa{#1: #2}%
  \ifdim \wd\@tempboxa >\hsize
    #1: #2\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}

%% If you are having all the figures with huge caption then use thebelow commands:
%% Otherwise, just comment the below two lines and
%% use "\begin{Figure}...\end{Figure}" instead of "\begin{figure}...\end{figure}"
\let\figure\Figure% replacing by default
\let\endfigure\endFigure%
%%

\makeatother

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{document}

\kant[1]

\begin{figure}%
\includegraphics[scale=1.1]{example-image-c}
\caption{\kant[1-3]}
\end{figure}

\kant[2-5]

\end{document} 

Sieht erstmal gut aus, jedoch habe ich hier das Problem, dass nun meine Formatierungen der captions über das Paket caption nicht mehr funktionieren. Durch die Gestaltungsrichtlinie meiner Arbeit muss ich folgende Formatierung bei Bildunterschriften erreichen:

-> einzeiliger Zeilenabstand
-> Captionnummerierung und Lable ("Figure") müssen fett sein
-> kleinerer Schriftgrad als im Fließtext (z.B. SMALL oder TINY)

Zumindest für die Fettschreibung habe ich einen workaround gefunden. Leider jedoch bekomme ich nun sowohl den einzeiligen Zeilenabstand als auch die kleinere Schriftgröße nicht mehr hin :-(

Weitere getestete Lösungen

Ich habe bereits andere Lösungen für die extralangen Captions gefunden die ich getestet habe um das o.g. Problem zu umgehen. Die meisten davon haben jedoch das Problem, dass sie zwar in der Dokumentenklasse article funktionieren, aber nicht in der für mich verbindlichen Dokumentenklasse scrreprt. Folgende Lösungen habe ich ausprobiert:

- https://tex.stackexchange.com/questions ... iple-pages
-> funktioniert bei mir leider nicht. Wenn die caption zu lang wird, wird sie komplett auf die nächste Seite verschoben, es erfolgt nicht der gewünschte Umbruch, sodass damit zuviel Platz verschenkt wird.

- https://tex.stackexchange.com/questions ... n-new-page
-> funktioniert nur dann, wenn ich die Dokumentenklasse article verwende, was bei mir leider nicht möglich ist (siehe oben)

- https://tex.stackexchange.com/questions ... -two-pages
-> Funktioniert leider nicht bei mir. Wenn ich die captions hier sehr lang mache, dann wird sie nicht umgebrochen, sie verläuft im Nirvana. Ich bin mir bei der Lösung aber auch nicht ganz sicher, ob sie wirklich mein Problem adresiert.

Zusammengefasst brauche ich also eine Lösung die...

- ...lange captions an der Seitengrenze umbrechen kann
- ...diese langen captions auch mit einzeiligem Zeilenabstand formatieren kann
- ... diese langen captions auch mit einer kleineren Schriftart darstellen kann.
- ... die generell mit langen captions ugehen kann. Eine Lösung alá "mach bitte die captions kürzer" funktioniert bei mir leider nicht. der wissenschaftliche Standard gibt das hier leider so vor :-(

Meine nächsten Schritte (Hinweise sind willkommen!)

- ich werde versuchen manuell den einzeiligen Zeilenabstand und die kleinere Schriftgröße zusammen mit der Lösung oben (https://groups.google.com/forum/#!topic ... Dz1cXtJZHA) zu kombinieren. Habe hier schon viele Hacks probiert, jedoch hebelt die mit der genannten Lösung eingeführte Neudefinition von makecaptions diese Lösungen aus, d.h. ich kann de captions nicht mehr von außen formatieren (nutzte bislang dafür das Paket "caption".

- vielleicht ist es möglich sich eine Art "custom caption" zu definieren, die im Grunde normaler Fließtext ist, jedoch die gleiche Formatierung wie die gewünschte Caption mitbringt.

Ich bin Euch sehr dankbar für jeden Vorschlag der zur Lösung meines Problems beiträgt!

liebe Grüße,

Stephan
Dateianhänge
long_captions_issue_min.pdf
das Fehlerbild
(52.6 KiB) 227-mal heruntergeladen
long_captions_issue_almost_solution_min.pdf
(39.43 KiB) 192-mal heruntergeladen
Zuletzt geändert von Wuchtbrumme am Do 23. Nov 2017, 22:03, insgesamt 1-mal geändert.

Gast

Beitrag von Gast »

Dir ist schon klar, dass die Forensprache hier Deutsch ist? Unter den Partnerseiten findest Du auch welche min. eine mit der Forensprache Englisch. Eine weitere Möglichkeit hast Du offenbar schon selbst gefunden.

Stamm-

Crosspost

Beitrag von Stamm- »


Wuchtbrumme
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 22. Nov 2017, 18:23

Beitrag von Wuchtbrumme »

Hallo,

danke für die schnelle Antwort. Nein, wusste leider nicht, dass das Forum rein Deutsch ist, danke für den Hinweis. Ich werde die Anfrage nochmal auf Deutsch übersetzen und würde mich wirklich über Eure Hilfe freuen. Ich habe es absichtlich sowohl hier als auch bei Stackoverflow/Stackexchange gepostet, da die beiden Foren in Summe für mich die vielversprechendsten waren. Ich bin bdi dem Problem leider echt am verzweifeln und strecke daher meine Fühler in alle Richtungen aus. Bitte um Verständnis.

lG Stephan

Antworten