Warum ist eine Caption über und eine unter den Objekten?

Tabellen und Grafiken erstellen und anordnen


roibot
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Dez 2011, 16:21

Warum ist eine Caption über und eine unter den Objekten?

Beitrag von roibot »

Hallo zusammen,

ich schreibe gerade an einem Dokument und da beobachte ich folgendes Verhalten, was ich mir nicht erklären kann. Ich habe mit floatrow eine Tabelle und eine Grafik nebeneinandergesetzt. Die Caption der Tabelle ist über dem Objekt, die Caption der Grafik unter dem Objekt. Ich habe absolut keine Ahnung warum und wie ich das so verändern kann, dass beine Captions unter den Objekten sind. Eine Option aus dem floatrow-Paket verändert nichts.

Mein Beispiel
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{floatrow}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[font=small,labelfont=bf]{caption}
\floatsetup[table]{capposition=bottom}

\begin{document}
	
\begin{figure}[htb!]
	\centering
	\begin{floatrow}[2]

		\ttabbox[\linewidth]
			{\begin{tabular}{lllllll}
			\toprule
			& \multicolumn{2}{c}{Farbe} & \multicolumn{2}{c}{Regen}  \\
			\cmidrule(lr){2-3}				  \cmidrule(lr){4-5}
			& $M$    & $SD$ & $M$     & $SD$     \\
			\midrule
			\emph{gut}  & 2.12    & 1.60   &  1.08    &  1.39      \\
			\emph{besser} & 2.31    & 1.56   &  0.40    &  1.48      \\
			\bottomrule              
			\end{tabular}}
			{\caption{Deskriptivstatistische Auswertung der überprüften Variablen. Es sind jeweils Mittelwert ($M$) und Standardabweichung ($SD$) für die Bedingungen \emph{gut} und \emph{besser} angegeben.}
			\label{tab:daten3}}

		\ffigbox[\linewidth]
			{\includegraphics[width=\linewidth]{example-image}}
			{\caption{Histogramm der Differenzvariablen (\emph{gut} $-$ \emph{besser}) mit Passung zu einer Normalverteilung.}
			\label{fig:verteilung3}}
			
	\end{floatrow}
\end{figure}


\end{document}
Weiß jemand, wo das Problem liegt?

Viele Grüße

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Re: Warum ist eine Caption über und eine unter den Objekten?

Beitrag von esdd »

roibot hat geschrieben:Die Caption der Tabelle ist über dem Objekt, die Caption der Grafik unter dem Objekt. Ich habe absolut keine Ahnung warum und wie ich das so verändern kann, dass beine Captions unter den Objekten sind. Eine Option aus dem floatrow-Paket verändert nichts.
Aus der Doku, 1.1.1 Float Box Commands
One of the first macros of this package for creation of float boxes is a macro which builds contents of the table environment with caption above (\ttabbox).
Das ist also das vom Paket für diese Box vorgegebene Verhalten. Definiert wird der Boxbefehl mit
\newfloatcommand{ttabbox}{table}[\captop][\FBwidth]
Das findet man genauso in der Doku wie die Definition von \ffigbox. Du kannst Dir nun analog eine \ftabbox definieren mit
\newfloatcommand{ftabbox}{table}[\nocapbeside][\FBwidth]
Prinzipiell könnte man mit \renewfloatcommand auch \ttabbox umdefinieren.

roibot
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Dez 2011, 16:21

Beitrag von roibot »

Hallo, danke für deine Antwort. Leider hat mir dein Vorschlag nicht weitergeholfen. Eigentlich müsste es laut Doku, 3.1.3 Position of Caption, möglich sein, die Caption-Position zu bestimmen. Seltsamerweise funktioniert dies nur für table nicht, für figure funktioniert es, siehe im Beispiel.
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{floatrow}
\usepackage{booktabs}
\usepackage{graphicx}
\usepackage[font=small,labelfont=bf]{caption}

\begin{document}

\floatsetup[figure]{capposition=bottom}
\floatsetup[table]{capposition=bottom}

\begin{figure}[htb!]
	\TopFloatBoxes
	\begin{floatrow}[2]

		\ttabbox[\linewidth]
			{\begin{tabular}{lllllll}
			\toprule
			& \multicolumn{2}{c}{Farbe} & \multicolumn{2}{c}{Regen}  \\
			\cmidrule(lr){2-3}				  \cmidrule(lr){4-5}
			& $M$    & $SD$ & $M$     & $SD$     \\
			\midrule
			\emph{gut}  & 2.12    & 1.60   &  1.08    &  1.39      \\
			\emph{besser} & 2.31    & 1.56   &  0.40    &  1.48      \\
			\bottomrule              
			\end{tabular}}
			{\caption{Deskriptivstatistische Auswertung der überprüften Variablen. Es sind jeweils Mittelwert ($M$) und Standardabweichung ($SD$) für die Bedingungen \emph{gut} und \emph{besser} angegeben.}
			\label{tab:daten3}}

		\ffigbox[\linewidth]
			{\includegraphics[width=\linewidth]{example-image}}
			{\caption{Histogramm der Differenzvariablen (\emph{gut} $-$ \emph{besser}) mit Passung zu einer Normalverteilung.}
			\label{fig:verteilung3}}
			
	\end{floatrow}
\end{figure}

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

\floatsetup[figure]{capposition=top}
\floatsetup[table]{capposition=top}

\begin{figure}[htb!]
	\TopFloatBoxes
	\begin{floatrow}[2]
		
		\ttabbox[\linewidth]
		{\begin{tabular}{lllllll}
				\toprule
				& \multicolumn{2}{c}{Farbe} & \multicolumn{2}{c}{Regen}  \\
				\cmidrule(lr){2-3}				  \cmidrule(lr){4-5}
				& $M$    & $SD$ & $M$     & $SD$     \\
				\midrule
				\emph{gut}  & 2.12    & 1.60   &  1.08    &  1.39      \\
				\emph{besser} & 2.31    & 1.56   &  0.40    &  1.48      \\
				\bottomrule              
		\end{tabular}}
		{\caption{Deskriptivstatistische Auswertung der überprüften Variablen. Es sind jeweils Mittelwert ($M$) und Standardabweichung ($SD$) für die Bedingungen \emph{gut} und \emph{besser} angegeben.}
			\label{tab:daten4}}
		
		\ffigbox[\linewidth]
		{\includegraphics[width=\linewidth]{example-image}}
		{\caption{Histogramm der Differenzvariablen (\emph{gut} $-$ \emph{besser}) mit Passung zu einer Normalverteilung.}
			\label{fig:verteilung4}}
		
	\end{floatrow}
\end{figure}


\end{document}
Dieses Paket macht mich fertig. Ich habe es auch schon mit Minipage probiert, aber da habe ich nicht herausgefunden, wie eine Caption "Tabelle" und eine "Abbildung" heißen kann, wenn beides über figure oder table eingebunden wird.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Wie ich schon geschrieben habe - und es auch eindeutig in der Doku steht - ist für \ttabbox explizit festgelegt, dass die Beschriftung immer oberhalb erfolgt. Für \ffigbox ist dagegen mittels \nocapbeside festgelegt, dass sich die Positionierung der Beschriftung nach den globalen Vorgaben richtet. Deshalb übernimmt \ffigbox die Vorgaben von \floatsetup.

Hast Du meinen Vorschlag wirklich getestet?
\documentclass[12pt]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[ngerman]{babel} 
\usepackage{floatrow} 
\usepackage{booktabs} 
\usepackage{graphicx} 
\usepackage[font=small,labelfont=bf]{caption} 

\floatsetup[table]{capposition=bottom}
\newfloatcommand{ftabbox}{table}[\nocapbeside][\FBwidth]

\begin{document} 
    
\begin{figure}[htb!] 
   \centering 
   \begin{floatrow}[2] 

      \ftabbox[\linewidth] 
         {\begin{tabular}{lllllll} 
         \toprule 
         & \multicolumn{2}{c}{Farbe} & \multicolumn{2}{c}{Regen}  \\ 
         \cmidrule(lr){2-3}              \cmidrule(lr){4-5} 
         & $M$    & $SD$ & $M$     & $SD$     \\ 
         \midrule 
         \emph{gut}  & 2.12    & 1.60   &  1.08    &  1.39      \\ 
         \emph{besser} & 2.31    & 1.56   &  0.40    &  1.48      \\ 
         \bottomrule               
         \end{tabular}} 
         {\caption{Deskriptivstatistische Auswertung der überprüften Variablen. Es sind jeweils Mittelwert ($M$) und Standardabweichung ($SD$) für die Bedingungen \emph{gut} und \emph{besser} angegeben.} 
         \label{tab:daten3}} 

      \ffigbox[\linewidth] 
         {\includegraphics[width=\linewidth]{example-image}} 
         {\caption{Histogramm der Differenzvariablen (\emph{gut} $-$ \emph{besser}) mit Passung zu einer Normalverteilung.} 
         \label{fig:verteilung3}} 
          
   \end{floatrow} 
\end{figure} 
\end{document}

roibot
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Dez 2011, 16:21

Beitrag von roibot »

Ja, ich habe ihn getestet, aber das war falsch. Jetzt habe ich deinen Vorschlag richtig verstanden und es funktioniert. Vielen Dank für deine Hilfe.

Antworten