Неправильное размещение подписи с tikzpicture

Неправильное размещение подписи с tikzpicture

У меня возникли проблемы с размещением субтитров \subfloatпри использовании tikzpicture.

Вот мой 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}

Он компилируется, но субтитры, которые я установил через , \subfloat[...]сильно смещены:

выход МВЭ

На этом этапе я окончательно запутался, поскольку использование того же самого кода в классе beamer-class работает совершенно нормально.

Я хочу избежать использования пакетов subfigureили subcaption. Я где-то читал, что было бы неплохо обернуть подэлементы в мини-страницы, но это не сработало.

Есть идеи по этому поводу?

редактировать Я нашел решение, которое работает для меня, используя подсказки @Troy и @John_Kormylo. Я закомментировал \setcapwidth{0.9\textwidth}и добавил его к каждому рисунку и таблице, кроме тех, где я использую tikzpicture... Добавление \setcapwidth{\textwidth}проблемных подэлементов ничего не изменило.

решение1

Классы KOMA на самом деле несовместимы с subfig. Вместо этого вы можете использовать subcaption.

\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}

введите описание изображения здесь

решение2

\setcapdynwidthНачиная с версии KOMA-Script 3.20 вместо этого можно использовать \setcapwidth. Из документации KOMA-Script:

Обратите внимание, \setcapwidthустанавливает widthнемедленно значение параметра width как это \setlengthсделал бы. Если вместо этого вы хотите значение widthпри установке заголовка, вы можете использовать \setcapdynwidth. Могут быть различия в результате, если вы, например, используете lengths как \linewidthили другие команды в качестве аргумента 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}

Результат:

введите описание изображения здесь

Связанный контент