Falsche Platzierung der Bildunterschrift mit TikzPicture

Falsche Platzierung der Bildunterschrift mit TikzPicture

Ich habe Probleme mit der Platzierung von Untertiteln, \subfloatwenn ich tikzpicture verwende.

Hier ist mein MWE:

\documentclass[a4paper,
               11pt,
               ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{caption}

\setkomafont{captionlabel}{\small\bfseries}
\setkomafont{caption}{\small}
\setcapindent{0em}
\setcapwidth{0.9\textwidth}
\captionsetup[subfigure]{font={footnotesize},labelfont={bf,footnotesize}}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}

\begin{document}

\tikzset{
    momentum/.style={postaction={decorate},
decoration={markings, mark=at position 1 with {\arrow[scale=0.8]{>}}}},
}

\begin{figure}[tb]
\subfloat[Winkel zwischen 1 und 3 am kleinsten]{
  \centering
  \begin{tikzpicture}[font=\small,scale=0.3]
    \centering
      \draw[momentum](5,5)--(5,1);
      \node[anchor=north]at(5,1){2};
      \draw[momentum](5,5)--(4,9);
      \node[anchor=east]at(4,9){1};
      \draw[momentum](5,5)--(6,9);
      \node[anchor=west]at(6,9){3};
  \end{tikzpicture}
} \hspace{1cm}
\subfloat[Winkel zwischen 2 und 3 am kleinsten]{
  \centering
  \begin{tikzpicture}[font=\small,scale=0.3]
    \centering
      \draw[momentum](5,5)--(5,1);
      \node[anchor=north]at(5,1){1};
      \draw[momentum](5,5)--(4,9);
      \node[anchor=east]at(4,9){2};
      \draw[momentum](5,5)--(6,9);
      \node[anchor=west]at(6,9){3};
  \end{tikzpicture}
} \hspace{1cm}
\subfloat[Alle Winkel etwa gleich groß]{
  \centering
  \begin{tikzpicture}[font=\small,scale=0.3]
    \centering
      \draw[momentum](5,5)--(5,1);
      \node[anchor=north]at(5,1){1};
      \draw[momentum](5,5)--(1,8);
      \node[anchor=east]at(1,8){2};
      \draw[momentum](5,5)--(9,8);
      \node[anchor=west]at(9,8){3};
  \end{tikzpicture} }
\caption{Bildunterschrift}
\end{figure}

\end{document}

Es wird kompiliert, aber die Untertitel, die ich über festgelegt habe, \subfloat[...]sind völlig falsch platziert:

Ausgabe des MWE

Ich bin an diesem Punkt völlig ratlos, da die Verwendung des exakt gleichen Codes in der Beamer-Klasse einwandfrei funktioniert.

Ich möchte die Verwendung der Pakete subfigureoder vermeiden subcaption. Ich habe irgendwo gelesen, dass es eine gute Idee sein könnte, die Unterfloats in Miniseiten zu verpacken, aber das hat nicht funktioniert.

Irgendwelche Ideen dazu?

bearbeiten Ich habe mithilfe der Hinweise von @Troy und @John_Kormylo eine Lösung gefunden, die für mich funktioniert. Ich habe es auskommentiert \setcapwidth{0.9\textwidth}und zu allen Abbildungen und Tabellen hinzugefügt, außer denen, in denen ich tikzpicture verwende ... Das Einfügen \setcapwidth{\textwidth}in die problematischen Unterfloats hat nichts geändert.

Antwort1

Die KOMA-Klassen sind nicht wirklich kompatibel mit subfig. Sie können subcaptionstattdessen verwenden.

\documentclass[
  a4paper,
  11pt,
  ngerman
]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{caption,subcaption}

\setkomafont{captionlabel}{\small\bfseries}
\setkomafont{caption}{\small}
\setcapindent{0em}
\setcapwidth{0.9\textwidth}
\captionsetup[subfigure]{font={footnotesize},labelfont={bf,footnotesize}}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}

\tikzset{
  momentum/.style={
    postaction={decorate},
    decoration={
      markings,
      mark=at position 1 with {\arrow[scale=0.8]{>}},
    },
  },
}

\begin{document}

\begin{figure}[tb]

\begin{subfigure}[b]{.3\textwidth}
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
  \draw[momentum](5,5)--(5,1);
  \node[anchor=north]at(5,1){2};
  \draw[momentum](5,5)--(4,9);
  \node[anchor=east]at(4,9){1};
  \draw[momentum](5,5)--(6,9);
  \node[anchor=west]at(6,9){3};
\end{tikzpicture}
\caption{Winkel zwischen 1 und 3 am kleinsten}
\end{subfigure}\hfill
\begin{subfigure}[b]{.3\textwidth}
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
  \draw[momentum](5,5)--(5,1);
  \node[anchor=north]at(5,1){1};
  \draw[momentum](5,5)--(4,9);
  \node[anchor=east]at(4,9){2};
  \draw[momentum](5,5)--(6,9);
  \node[anchor=west]at(6,9){3};
\end{tikzpicture}
\caption{Winkel zwischen 2 und 3 am kleinsten}
\end{subfigure}\hfill
\begin{subfigure}[b]{.3\textwidth}
\centering
\begin{tikzpicture}[font=\small,scale=0.3]
  \draw[momentum](5,5)--(5,1);
  \node[anchor=north]at(5,1){1};
  \draw[momentum](5,5)--(1,8);
  \node[anchor=east]at(1,8){2};
  \draw[momentum](5,5)--(9,8);
  \node[anchor=west]at(9,8){3};
\end{tikzpicture}
\caption{Alle Winkel etwa gleich groß}
\end{subfigure}

\caption{Bildunterschrift}
\end{figure}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Seit KOMA-Script Version 3.20 können Sie \setcapdynwidthstattdessen verwenden \setcapwidth. Aus der KOMA-Script-Dokumentation:

Bitte beachten Sie, \setcapwidthdass der widthsofort auf den Wert des Parameters width gesetzt wird, wie \setlengthes auch getan würde. Wenn Sie stattdessen den Wert von wünschen, widthwenn die Überschrift gesetzt wird, können Sie verwenden \setcapdynwidth. Es kann Unterschiede im Ergebnis geben, wenn Sie beispielsweise Längen wie \linewidthoder andere Befehle als Argument verwenden width.

\documentclass[a4paper,
               11pt,
               ngerman]{scrreprt}[2016/05/10]
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{caption}

\setkomafont{captionlabel}{\small\bfseries}
\setkomafont{caption}{\small}
\setcapindent{0em}
\setcapdynwidth{0.9\textwidth}% <- changed, needs KOMA-Script version 3.20
\captionsetup[subfigure]{font={footnotesize},labelfont={bf,footnotesize}}

\usepackage{tikz}
\usetikzlibrary{trees}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{patterns}
\usetikzlibrary{arrows}

\begin{document}

\tikzset{
    momentum/.style={postaction={decorate},
decoration={markings, mark=at position 1 with {\arrow[scale=0.8]{>}}}},
}

\begin{figure}[tb]
\subfloat[Winkel zwischen 1 und 3 am kleinsten]{
  \centering
  \begin{tikzpicture}[font=\small,scale=0.3]
    \centering
      \draw[momentum](5,5)--(5,1);
      \node[anchor=north]at(5,1){2};
      \draw[momentum](5,5)--(4,9);
      \node[anchor=east]at(4,9){1};
      \draw[momentum](5,5)--(6,9);
      \node[anchor=west]at(6,9){3};
  \end{tikzpicture}
} \hspace{1cm}
\subfloat[Winkel zwischen 2 und 3 am kleinsten]{
  \centering
  \begin{tikzpicture}[font=\small,scale=0.3]
    \centering
      \draw[momentum](5,5)--(5,1);
      \node[anchor=north]at(5,1){1};
      \draw[momentum](5,5)--(4,9);
      \node[anchor=east]at(4,9){2};
      \draw[momentum](5,5)--(6,9);
      \node[anchor=west]at(6,9){3};
  \end{tikzpicture}
} \hspace{1cm}
\subfloat[Alle Winkel etwa gleich groß]{
  \centering
  \begin{tikzpicture}[font=\small,scale=0.3]
    \centering
      \draw[momentum](5,5)--(5,1);
      \node[anchor=north]at(5,1){1};
      \draw[momentum](5,5)--(1,8);
      \node[anchor=east]at(1,8){2};
      \draw[momentum](5,5)--(9,8);
      \node[anchor=west]at(9,8){3};
  \end{tikzpicture} }
\caption{Bildunterschrift}
\end{figure}

\end{document}

Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen